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
55f0893f
Commit
55f0893f
authored
Apr 27, 2025
by
zhoushiguang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
频发拥堵/缓行路段小时粒度数据中间表计算
parent
e1f7a137
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
143 additions
and
8 deletions
+143
-8
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
+55
-3
AnalysisProblemCrossDayMapper.xml
...es/mapper/judgeanalysis/AnalysisProblemCrossDayMapper.xml
+30
-0
AnalysisProblemDayTaskTest.java
...ata-compute/src/test/java/AnalysisProblemDayTaskTest.java
+42
-5
No files found.
signal-optimize-data-compute/src/main/java/net/wanji/opt/dao/mapper/judgeanalysis/AnalysisProblemCrossDayMapper.java
View file @
55f0893f
...
@@ -116,5 +116,10 @@ public interface AnalysisProblemCrossDayMapper extends BaseMapper<AnalysisProble
...
@@ -116,5 +116,10 @@ public interface AnalysisProblemCrossDayMapper extends BaseMapper<AnalysisProble
List
<
GreenwaveCrossResultDTO
>
getTrunkLineCrossProblemByDay
();
List
<
GreenwaveCrossResultDTO
>
getTrunkLineCrossProblemByDay
();
void
insertAnalysisCrossDayData
(
List
<
GreenwaveCrossResultDTO
>
greenwaveCrossResultList
);
void
insertAnalysisCrossDayData
(
List
<
GreenwaveCrossResultDTO
>
greenwaveCrossResultList
);
/**
* 绿波干线小时粒度拥堵数据
*/
void
insertGreenCrossHourData
(
@Param
(
"startTime"
)
String
startTime
,
@Param
(
"endTime"
)
String
endTime
);
}
}
signal-optimize-data-compute/src/main/java/net/wanji/opt/servicev2/judgeanalysis/AnalysisProblemCrossDayService.java
View file @
55f0893f
...
@@ -76,4 +76,6 @@ public interface AnalysisProblemCrossDayService extends IService<AnalysisProblem
...
@@ -76,4 +76,6 @@ public interface AnalysisProblemCrossDayService extends IService<AnalysisProblem
CrossOptAnalysisVO
getCrossOptAnalysis
(
String
crossID
,
String
startTime
,
String
endTime
);
CrossOptAnalysisVO
getCrossOptAnalysis
(
String
crossID
,
String
startTime
,
String
endTime
);
void
insertAnalysisProblemCrossDay
();
void
insertAnalysisProblemCrossDay
();
public
void
insertGreenCrossHourData
(
String
startTime
,
String
endTime
);
}
}
signal-optimize-data-compute/src/main/java/net/wanji/opt/servicev2/judgeanalysis/impl/AnalysisProblemCrossDayServiceImpl.java
View file @
55f0893f
...
@@ -13,6 +13,7 @@ import net.wanji.opt.synthesis.pojo.CrossOptAnalysisEntity;
...
@@ -13,6 +13,7 @@ import net.wanji.opt.synthesis.pojo.CrossOptAnalysisEntity;
import
net.wanji.opt.vo2.CrossOptAnalysisVO
;
import
net.wanji.opt.vo2.CrossOptAnalysisVO
;
import
net.wanji.opt.vo2.GreenwaveCrossResult
;
import
net.wanji.opt.vo2.GreenwaveCrossResult
;
import
net.wanji.opt.vo2.GreenwaveCrossResultDTO
;
import
net.wanji.opt.vo2.GreenwaveCrossResultDTO
;
import
org.apache.ibatis.annotations.Param
;
import
org.locationtech.jts.geom.Geometry
;
import
org.locationtech.jts.geom.Geometry
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -219,4 +220,12 @@ public class AnalysisProblemCrossDayServiceImpl extends ServiceImpl<AnalysisProb
...
@@ -219,4 +220,12 @@ public class AnalysisProblemCrossDayServiceImpl extends ServiceImpl<AnalysisProb
analysisProblemCrossDayMapper
.
insertAnalysisCrossDayData
(
greenwaveCrossResultList
);
analysisProblemCrossDayMapper
.
insertAnalysisCrossDayData
(
greenwaveCrossResultList
);
}
}
@Override
public
void
insertGreenCrossHourData
(
String
startTime
,
String
endTime
)
{
analysisProblemCrossDayMapper
.
insertGreenCrossHourData
(
startTime
,
endTime
);
}
}
}
signal-optimize-data-compute/src/main/java/net/wanji/opt/task/AnalysisProblemCrossDayTask.java
View file @
55f0893f
package
net
.
wanji
.
opt
.
task
;
package
net
.
wanji
.
opt
.
task
;
import
cn.hutool.core.date.DateField
;
import
cn.hutool.core.date.DateTime
;
import
cn.hutool.core.date.DateUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.opt.servicev2.judgeanalysis.AnalysisProblemCrossDayService
;
import
net.wanji.opt.servicev2.judgeanalysis.AnalysisProblemCrossDayService
;
import
org.springframework.boot.ApplicationArguments
;
import
org.springframework.boot.ApplicationArguments
;
...
@@ -9,18 +12,21 @@ import org.springframework.stereotype.Component;
...
@@ -9,18 +12,21 @@ import org.springframework.stereotype.Component;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.util.Date
;
@Component
@Component
@Slf4j
@Slf4j
public
class
AnalysisProblemCrossDayTask
implements
ApplicationRunner
{
public
class
AnalysisProblemCrossDayTask
implements
ApplicationRunner
{
@Resource
@Resource
private
AnalysisProblemCrossDayService
analysisProblemCrossDayService
;
private
AnalysisProblemCrossDayService
analysisProblemCrossDayService
;
@Override
@Override
public
void
run
(
ApplicationArguments
args
)
throws
Exception
{
public
void
run
(
ApplicationArguments
args
)
throws
Exception
{
log
.
info
(
"服务启动时--干线协调方向频发拥堵/缓行路段--任务执行时间:"
+
LocalDateTime
.
now
());
log
.
info
(
"服务启动时--干线协调方向频发拥堵/缓行路段--任务执行时间:"
+
LocalDateTime
.
now
());
// 干线协调方向频发拥堵/缓行路段
// 干线协调方向频发拥堵/缓行路段
try
{
try
{
// analysisProblemCrossDayService.insertAnalysisProblemCrossDay();
// analysisProblemCrossDayService.insertAnalysisProblemCrossDay();
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
"服务启动时--干线协调方向频发拥堵/缓行路段--任务执行错误"
+
e
);
log
.
error
(
"服务启动时--干线协调方向频发拥堵/缓行路段--任务执行错误"
+
e
);
}
}
log
.
info
(
"服务启动时--干线协调方向频发拥堵/缓行路段--任务执行结束时间:"
+
LocalDateTime
.
now
());
log
.
info
(
"服务启动时--干线协调方向频发拥堵/缓行路段--任务执行结束时间:"
+
LocalDateTime
.
now
());
...
@@ -29,15 +35,61 @@ public class AnalysisProblemCrossDayTask implements ApplicationRunner {
...
@@ -29,15 +35,61 @@ public class AnalysisProblemCrossDayTask implements ApplicationRunner {
/**
/**
* 每凌晨 0:30 执行的任务
* 每凌晨 0:30 执行的任务
*/
*/
@Scheduled
(
cron
=
"0 10 0 * * ?"
)
public
void
executeWeeklyTask
()
{
@Scheduled
(
cron
=
"0 10 0 * * ?"
)
public
void
executeWeeklyTask
()
{
//干线协调方向频发拥堵/缓行路段
//干线协调方向频发拥堵/缓行路段
log
.
info
(
"定时任务--干线协调方向频发拥堵/缓行路段--执行开始时间:"
+
LocalDateTime
.
now
());
log
.
info
(
"定时任务--干线协调方向频发拥堵/缓行路段--执行开始时间:"
+
LocalDateTime
.
now
());
try
{
try
{
analysisProblemCrossDayService
.
insertAnalysisProblemCrossDay
();
analysisProblemCrossDayService
.
insertAnalysisProblemCrossDay
();
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
"定时任务--干线协调方向频发拥堵/缓行路段--任务执行错误"
+
e
);
log
.
error
(
"定时任务--干线协调方向频发拥堵/缓行路段--任务执行错误"
+
e
);
}
}
log
.
info
(
"定时任务--干线协调方向频发拥堵/缓行路段--执行结束时间:"
+
LocalDateTime
.
now
());
log
.
info
(
"定时任务--干线协调方向频发拥堵/缓行路段--执行结束时间:"
+
LocalDateTime
.
now
());
}
}
/**
* 每小时执行溢出
*/
@Scheduled
(
cron
=
"5 0 * * * ?"
)
public
void
executeGreenCrossHourTask
()
{
//干线协调方向频发拥堵/缓行路段
log
.
info
(
"定时任务--干线协调方向频发拥堵/缓行路段--执行开始时间:"
+
LocalDateTime
.
now
());
try
{
DateTime
endTDateTime
=
DateUtil
.
date
();
//开始时间
DateTime
startTDateTime
=
DateUtil
.
offsetHour
(
endTDateTime
,
-
1
);
String
sdt
=
startTDateTime
.
toString
(
"yyyy-MM-dd HH:00:00"
);
//窗口截止时间
endTDateTime
=
DateUtil
.
parseDateTime
(
sdt
).
offset
(
DateField
.
HOUR
,
1
).
offset
(
DateField
.
SECOND
,-
1
);
String
edt
=
endTDateTime
.
toString
(
"yyyy-MM-dd HH:mm:ss"
);
analysisProblemCrossDayService
.
insertGreenCrossHourData
(
sdt
,
edt
);
log
.
info
(
"干线协调方向频发拥堵/缓行路段=》小时粒度数据入库,小时开始时间:{},小时截止时间:{},截止时间:{}"
,
sdt
,
edt
,
endTDateTime
.
toString
(
"yyyy-MM-dd HH:mm:ss"
));
}
catch
(
Exception
e
)
{
log
.
error
(
"定时任务--干线协调方向频发拥堵/缓行路段--任务执行错误"
+
e
);
}
log
.
info
(
"定时任务--干线协调方向频发拥堵/缓行路段--执行结束时间:"
+
LocalDateTime
.
now
());
}
public
static
void
main
(
String
[]
args
)
{
DateTime
endTDateTime
=
DateUtil
.
date
();
//开始时间
DateTime
startTDateTime
=
DateUtil
.
offsetHour
(
endTDateTime
,
-
1
);
String
sdt
=
startTDateTime
.
toString
(
"yyyy-MM-dd HH:00:00"
);
//窗口截止时间
DateTime
endDateTime
=
DateUtil
.
parseDateTime
(
sdt
).
offset
(
DateField
.
HOUR
,
1
).
offset
(
DateField
.
SECOND
,-
1
);
String
edt
=
endDateTime
.
toString
(
"yyyy-MM-dd HH:mm:ss"
);
System
.
out
.
println
(
sdt
+
" "
+
edt
);
}
}
}
signal-optimize-data-compute/src/main/resources/mapper/judgeanalysis/AnalysisProblemCrossDayMapper.xml
View file @
55f0893f
...
@@ -434,5 +434,35 @@
...
@@ -434,5 +434,35 @@
where ( b.in_dir = a.dir_type OR b.out_dir = a.dir_type )
where ( b.in_dir = a.dir_type OR b.out_dir = a.dir_type )
</select>
</select>
<insert
id=
"insertGreenCrossHourData"
parameterType=
"map"
>
INSERT INTO t_analysis_green_wave_cross_hour_data (green_id, dir_count, cross_id, status, dir_type, in_dir, out_dir, name, start_time, end_time)
SELECT
b.green_id,
a.dir_count,
a.cross_id,
a.status,
a.dir_type,
b.in_dir,
b.out_dir,
c.name,
#{startTime} as startTime,
#{endTime} as endTime
FROM
(
SELECT count(*) AS dir_count, cross_id, dir_type, status
FROM t_cross_dir_data_hist
WHERE
start_time BETWEEN #{startTime} AND #{endTime}
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 )
ON DUPLICATE KEY UPDATE
dir_count = VALUES(dir_count),
in_dir = VALUES(in_dir),
out_dir = VALUES(out_dir),
name = VALUES(name)
</insert>
</mapper>
</mapper>
signal-optimize-data-compute/src/test/java/AnalysisProblemDayTaskTest.java
View file @
55f0893f
...
@@ -2,6 +2,9 @@
...
@@ -2,6 +2,9 @@
*
*
*/
*/
import
cn.hutool.core.date.DateTime
;
import
cn.hutool.core.date.DateUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.opt.SignalOptimizeApplication
;
import
net.wanji.opt.SignalOptimizeApplication
;
import
net.wanji.opt.dao.mapper.judgeanalysis.AnalysisProblemCrossDayMapper
;
import
net.wanji.opt.dao.mapper.judgeanalysis.AnalysisProblemCrossDayMapper
;
import
org.junit.FixMethodOrder
;
import
org.junit.FixMethodOrder
;
...
@@ -12,6 +15,8 @@ import org.springframework.beans.factory.annotation.Autowired;
...
@@ -12,6 +15,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
java.util.Date
;
/**
/**
* @author fengyi
* @author fengyi
* @date
* @date
...
@@ -19,16 +24,48 @@ import org.springframework.test.context.junit4.SpringRunner;
...
@@ -19,16 +24,48 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith
(
SpringRunner
.
class
)
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
(
classes
=
SignalOptimizeApplication
.
class
,
webEnvironment
=
SpringBootTest
.
WebEnvironment
.
RANDOM_PORT
)
@SpringBootTest
(
classes
=
SignalOptimizeApplication
.
class
,
webEnvironment
=
SpringBootTest
.
WebEnvironment
.
RANDOM_PORT
)
@FixMethodOrder
(
MethodSorters
.
NAME_ASCENDING
)
@FixMethodOrder
(
MethodSorters
.
NAME_ASCENDING
)
@Slf4j
public
class
AnalysisProblemDayTaskTest
{
public
class
AnalysisProblemDayTaskTest
{
@Autowired
@Autowired
private
AnalysisProblemCrossDayMapper
analysisProblemCrossDayMapper
;
private
AnalysisProblemCrossDayMapper
analysisProblemCrossDayMapper
;
@Test
@Test
public
void
testProducerTrack
()
{
public
void
testProducerTrack
()
{
long
st
=
System
.
currentTimeMillis
();
analysisProblemCrossDayMapper
.
insertAnalysisProblemCrossDay
();
DateTime
endTDateTime
=
DateUtil
.
date
();
long
et
=
System
.
currentTimeMillis
();
System
.
out
.
println
((
et
-
st
)+
"ms"
);
//开始时间
DateTime
startTDateTime
=
DateUtil
.
offsetHour
(
endTDateTime
,
-
1
);
String
sdt
=
startTDateTime
.
toString
(
"yyyy-MM-dd HH:00:00"
);
//窗口截止时间
startTDateTime
=
DateUtil
.
offsetSecond
(
startTDateTime
,
59
);
String
edt
=
startTDateTime
.
toString
(
"yyyy-MM-dd HH:mm:ss"
);
System
.
out
.
println
();
// long st = System.currentTimeMillis();
// DateTime startTDateTime = DateUtil.beginOfDay(new Date());
// DateTime endTDateTime = DateUtil.date(); //DateUtil.offsetHour(startTDateTime,1);
//
// while (startTDateTime.isBefore(endTDateTime)) {
//
// String sdt = startTDateTime.toString("yyyy-MM-dd HH:00:00");
//
// startTDateTime = DateUtil.offsetHour(startTDateTime, 1);
// startTDateTime = DateUtil.offsetSecond(startTDateTime,-1);
//
// String edt = startTDateTime.toString("yyyy-MM-dd HH:mm:ss");
//
// analysisProblemCrossDayMapper.insertGreenCrossHourData(sdt, edt);
//
// startTDateTime = DateUtil.offsetSecond(startTDateTime,1);
// log.info("小时粒度数据入库,小时开始时间:{},小时截止时间:{},截止时间:{}",sdt,edt,endTDateTime.toString("yyyy-MM-dd HH:mm:ss"));
//
// }
//
// long et = System.currentTimeMillis();
// System.out.println((et - st) + "ms");
}
}
...
...
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