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
jinan
traffic-signal-platform
Commits
f38bef07
Commit
f38bef07
authored
Apr 23, 2025
by
fengyasheng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
干线协调方向频发拥堵/缓行路段接口更新-定时任务每天计算
parent
e4063f7a
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
149 additions
and
26 deletions
+149
-26
AnalysisProblemCrossDayMapper.java
...o/mapper/judgeanalysis/AnalysisProblemCrossDayMapper.java
+5
-0
AnalysisProblemCrossDayService.java
...rvicev2/judgeanalysis/AnalysisProblemCrossDayService.java
+2
-0
AnalysisProblemCrossDayServiceImpl.java
...udgeanalysis/impl/AnalysisProblemCrossDayServiceImpl.java
+9
-0
AnalysisProblemCrossDayTask.java
.../java/net/wanji/opt/task/AnalysisProblemCrossDayTask.java
+43
-0
GreenwaveCrossResult.java
...src/main/java/net/wanji/opt/vo2/GreenwaveCrossResult.java
+16
-0
GreenwaveCrossResultDTO.java
.../main/java/net/wanji/opt/vo2/GreenwaveCrossResultDTO.java
+21
-0
AnalysisProblemCrossDayMapper.xml
...es/mapper/judgeanalysis/AnalysisProblemCrossDayMapper.xml
+37
-0
AnalysisProblemCrossDayMapper.xml
...es/mapper/judgeanalysis/AnalysisProblemCrossDayMapper.xml
+16
-26
No files found.
signal-optimize-data-compute/src/main/java/net/wanji/opt/dao/mapper/judgeanalysis/AnalysisProblemCrossDayMapper.java
View file @
f38bef07
...
...
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import
net.wanji.opt.entity.judgeanalysis.AnalysisProblemCrossDay
;
import
net.wanji.opt.entity.judgeanalysis.CrossPoint
;
import
net.wanji.opt.synthesis.pojo.CrossOptAnalysisEntity
;
import
net.wanji.opt.vo2.GreenwaveCrossResultDTO
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
...
...
@@ -111,5 +112,9 @@ public interface AnalysisProblemCrossDayMapper extends BaseMapper<AnalysisProble
* 获取路口优化数据
*/
List
<
CrossOptAnalysisEntity
>
getCrossOptAnalysis
(
@Param
(
"greenId"
)
String
greenId
,
@Param
(
"crossID"
)
String
crossID
,
@Param
(
"startTime"
)
String
startTime
,
@Param
(
"endTime"
)
String
endTime
);
List
<
GreenwaveCrossResultDTO
>
getTrunkLineCrossProblemByDay
();
void
insertAnalysisCrossDayData
(
List
<
GreenwaveCrossResultDTO
>
greenwaveCrossResultList
);
}
signal-optimize-data-compute/src/main/java/net/wanji/opt/servicev2/judgeanalysis/AnalysisProblemCrossDayService.java
View file @
f38bef07
...
...
@@ -74,4 +74,6 @@ public interface AnalysisProblemCrossDayService extends IService<AnalysisProblem
* @param date 日期
*/
CrossOptAnalysisVO
getCrossOptAnalysis
(
String
crossID
,
String
startTime
,
String
endTime
);
void
insertAnalysisProblemCrossDay
();
}
signal-optimize-data-compute/src/main/java/net/wanji/opt/servicev2/judgeanalysis/impl/AnalysisProblemCrossDayServiceImpl.java
View file @
f38bef07
...
...
@@ -11,6 +11,8 @@ import net.wanji.opt.entity.judgeanalysis.CrossPoint;
import
net.wanji.opt.servicev2.judgeanalysis.AnalysisProblemCrossDayService
;
import
net.wanji.opt.synthesis.pojo.CrossOptAnalysisEntity
;
import
net.wanji.opt.vo2.CrossOptAnalysisVO
;
import
net.wanji.opt.vo2.GreenwaveCrossResult
;
import
net.wanji.opt.vo2.GreenwaveCrossResultDTO
;
import
org.locationtech.jts.geom.Geometry
;
import
org.springframework.stereotype.Service
;
...
...
@@ -210,4 +212,11 @@ public class AnalysisProblemCrossDayServiceImpl extends ServiceImpl<AnalysisProb
return
crossOptAnalysisVO
;
}
@Override
public
void
insertAnalysisProblemCrossDay
()
{
List
<
GreenwaveCrossResultDTO
>
greenwaveCrossResultList
=
analysisProblemCrossDayMapper
.
getTrunkLineCrossProblemByDay
();
analysisProblemCrossDayMapper
.
insertAnalysisCrossDayData
(
greenwaveCrossResultList
);
}
}
signal-optimize-data-compute/src/main/java/net/wanji/opt/task/AnalysisProblemCrossDayTask.java
0 → 100644
View file @
f38bef07
package
net
.
wanji
.
opt
.
task
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.opt.servicev2.judgeanalysis.AnalysisProblemCrossDayService
;
import
org.springframework.boot.ApplicationArguments
;
import
org.springframework.boot.ApplicationRunner
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
import
java.time.LocalDateTime
;
@Component
@Slf4j
public
class
AnalysisProblemCrossDayTask
implements
ApplicationRunner
{
@Resource
private
AnalysisProblemCrossDayService
analysisProblemCrossDayService
;
@Override
public
void
run
(
ApplicationArguments
args
)
throws
Exception
{
log
.
info
(
"服务启动时--干线协调方向频发拥堵/缓行路段--任务执行时间:"
+
LocalDateTime
.
now
());
// 干线协调方向频发拥堵/缓行路段
try
{
// analysisProblemCrossDayService.insertAnalysisProblemCrossDay();
}
catch
(
Exception
e
){
log
.
error
(
"服务启动时--干线协调方向频发拥堵/缓行路段--任务执行错误"
+
e
);
}
log
.
info
(
"服务启动时--干线协调方向频发拥堵/缓行路段--任务执行结束时间:"
+
LocalDateTime
.
now
());
}
/**
* 每凌晨 0:30 执行的任务
*/
@Scheduled
(
cron
=
"0 10 0 * * ?"
)
public
void
executeWeeklyTask
()
{
//干线协调方向频发拥堵/缓行路段
log
.
info
(
"定时任务--干线协调方向频发拥堵/缓行路段--执行开始时间:"
+
LocalDateTime
.
now
());
try
{
analysisProblemCrossDayService
.
insertAnalysisProblemCrossDay
();
}
catch
(
Exception
e
){
log
.
error
(
"定时任务--干线协调方向频发拥堵/缓行路段--任务执行错误"
+
e
);
}
log
.
info
(
"定时任务--干线协调方向频发拥堵/缓行路段--执行结束时间:"
+
LocalDateTime
.
now
());
}
}
signal-optimize-data-compute/src/main/java/net/wanji/opt/vo2/GreenwaveCrossResult.java
0 → 100644
View file @
f38bef07
package
net
.
wanji
.
opt
.
vo2
;
import
lombok.Data
;
@Data
public
class
GreenwaveCrossResult
{
// 字段映射 SQL 查询中的列
private
Integer
greenId
;
private
Integer
dirCount
;
// count(*) AS dir_count
private
String
crossId
;
// b.cross_id
private
Integer
status
;
// status
private
Integer
dirType
;
// dir_type
private
Integer
inDir
;
// a.in_dir
private
Integer
outDir
;
// a.out_dir
private
String
name
;
// c.name
}
\ No newline at end of file
signal-optimize-data-compute/src/main/java/net/wanji/opt/vo2/GreenwaveCrossResultDTO.java
0 → 100644
View file @
f38bef07
package
net
.
wanji
.
opt
.
vo2
;
import
lombok.Data
;
import
java.util.Date
;
@Data
public
class
GreenwaveCrossResultDTO
{
// 字段映射 SQL 查询中的列
private
String
id
;
private
Integer
greenId
;
private
Integer
dirCount
;
// count(*) AS dir_count
private
String
crossId
;
// b.cross_id
private
Integer
status
;
// status
private
Integer
dirType
;
// dir_type
private
Integer
inDir
;
// a.in_dir
private
Integer
outDir
;
// a.out_dir
private
String
name
;
// c.name
private
Date
startTime
;
private
Date
endTime
;
}
\ No newline at end of file
signal-optimize-data-compute/src/main/resources/mapper/judgeanalysis/AnalysisProblemCrossDayMapper.xml
View file @
f38bef07
...
...
@@ -298,6 +298,22 @@
;
</insert>
<insert
id=
"insertAnalysisCrossDayData"
parameterType=
"java.util.List"
>
INSERT INTO t_analysis_green_wave_cross_day_data (
green_id, dir_count, cross_id, status, dir_type, in_dir, out_dir, name, start_time, end_time
) VALUES
<foreach
collection=
"list"
item=
"item"
separator=
","
>
(
#{item.greenId}, #{item.dirCount}, #{item.crossId}, #{item.status}, #{item.dirType},
#{item.inDir}, #{item.outDir}, #{item.name}, #{item.startTime}, #{item.endTime}
)
</foreach>
ON DUPLICATE KEY UPDATE
dir_count = VALUES(dir_count),
in_dir = VALUES(in_dir),
out_dir = VALUES(out_dir),
name = VALUES(name)
</insert>
<!-- 根据条件查询表t_analysis_problem_cross_day信息 -->
<select
id=
"checkData"
resultMap=
"AnalysisProblemCrossDayMap"
>
SELECT dt
...
...
@@ -396,6 +412,27 @@
and t.dt >= date_format(#{startTime},'%Y%m%d') and t.dt
<
= date_format(#{endTime},'%Y%m%d')
group by status
</select>
<select
id=
"getTrunkLineCrossProblemByDay"
resultType=
"net.wanji.opt.vo2.GreenwaveCrossResultDTO"
>
SELECT
a.dir_count,
a.cross_id,
a.status,
a.dir_type,
b.in_dir,
b.out_dir,
c.name,
b.green_id,
DATE_SUB(CURDATE(), INTERVAL 1 DAY) as startTime,
DATE_SUB(CURDATE(), INTERVAL 1 SECOND) as endTime
FROM
( SELECT count(*) AS dir_count, cross_id, dir_type, status FROM t_cross_dir_data_hist
WHERE
start_time BETWEEN DATE_SUB(CURDATE(), INTERVAL 1 DAY) AND DATE_SUB(CURDATE(), INTERVAL 1 SECOND)
GROUP BY cross_id, dir_type, status ) a
LEFT JOIN t_greenwave_cross b ON a.cross_id = b.cross_id
LEFT JOIN t_base_cross_info c ON a.cross_id = c.id
where ( b.in_dir = a.dir_type OR b.out_dir = a.dir_type )
</select>
</mapper>
signal-optimize-service/src/main/resources/mapper/judgeanalysis/AnalysisProblemCrossDayMapper.xml
View file @
f38bef07
...
...
@@ -367,35 +367,25 @@
</select>
<select
id=
"getTrunkLineCrossProblem"
resultType=
"net.wanji.opt.vo2.GreenwaveCrossResult"
>
SELECT
a.green_id,
count(*) AS dir_count,
b.cross_id,
sum(dir_count) as dir_count,
cross_id,
status,
dir_type,
a.in_dir,
a.out_dir,
c.name
in_dir,
out_dir,
name,
green_id
FROM
t_greenwave_cross a
LEFT JOIN t_base_cross_info AS c ON a.cross_id = c.id
LEFT JOIN t_cross_dir_data_hist b ON a.cross_id = b.cross_id
WHERE
1=1
<if
test=
"greenId != null"
>
AND a.green_id = #{greenId}
</if>
<if
test=
"startTime != null and endTime != null"
>
AND b.start_time BETWEEN #{startTime}
AND #{endTime}
</if>
<if
test=
"status != null"
>
AND b.status = #{status}
</if>
AND ( a.in_dir = b.dir_type OR a.out_dir = b.dir_type )
GROUP BY
b.cross_id,
dir_type,
status
t_analysis_green_wave_cross_day_data
WHERE
1=1
<if
test=
"startTime != null and endTime != null"
>
and start_time BETWEEN #{startTime} AND #{endTime}
</if>
<if
test=
"greenId != null"
>
and green_id = #{greenId}
</if>
GROUP BY cross_id, dir_type, status
</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