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
75173da9
Commit
75173da9
authored
Apr 27, 2025
by
duanruiming
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
72bc7534
f67f4c22
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
159 additions
and
16 deletions
+159
-16
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
CommonUtils.java
...rvice/src/main/java/net/wanji/opt/common/CommonUtils.java
+2
-1
TEventOptimizeInfoVO.java
.../wanji/opt/entity/eventoptimize/TEventOptimizeInfoVO.java
+3
-0
TEventOptimizeInfoServiceImpl.java
...ev2/eventoptimize/impl/TEventOptimizeInfoServiceImpl.java
+2
-0
TEventOptimizeInfoMapper.xml
...sources/mapper/eventoptimize/TEventOptimizeInfoMapper.xml
+9
-7
No files found.
signal-optimize-data-compute/src/main/java/net/wanji/opt/dao/mapper/judgeanalysis/AnalysisProblemCrossDayMapper.java
View file @
75173da9
...
...
@@ -116,5 +116,10 @@ public interface AnalysisProblemCrossDayMapper extends BaseMapper<AnalysisProble
List
<
GreenwaveCrossResultDTO
>
getTrunkLineCrossProblemByDay
();
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 @
75173da9
...
...
@@ -76,4 +76,6 @@ public interface AnalysisProblemCrossDayService extends IService<AnalysisProblem
CrossOptAnalysisVO
getCrossOptAnalysis
(
String
crossID
,
String
startTime
,
String
endTime
);
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 @
75173da9
...
...
@@ -13,6 +13,7 @@ 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.apache.ibatis.annotations.Param
;
import
org.locationtech.jts.geom.Geometry
;
import
org.springframework.stereotype.Service
;
...
...
@@ -219,4 +220,12 @@ public class AnalysisProblemCrossDayServiceImpl extends ServiceImpl<AnalysisProb
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 @
75173da9
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
net.wanji.opt.servicev2.judgeanalysis.AnalysisProblemCrossDayService
;
import
org.springframework.boot.ApplicationArguments
;
...
...
@@ -9,18 +12,21 @@ import org.springframework.stereotype.Component;
import
javax.annotation.Resource
;
import
java.time.LocalDateTime
;
import
java.util.Date
;
@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
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
"服务启动时--干线协调方向频发拥堵/缓行路段--任务执行错误"
+
e
);
}
log
.
info
(
"服务启动时--干线协调方向频发拥堵/缓行路段--任务执行结束时间:"
+
LocalDateTime
.
now
());
...
...
@@ -29,15 +35,61 @@ public class AnalysisProblemCrossDayTask implements ApplicationRunner {
/**
* 每凌晨 0:30 执行的任务
*/
@Scheduled
(
cron
=
"0 10 0 * * ?"
)
public
void
executeWeeklyTask
()
{
@Scheduled
(
cron
=
"0 10 0 * * ?"
)
public
void
executeWeeklyTask
()
{
//干线协调方向频发拥堵/缓行路段
log
.
info
(
"定时任务--干线协调方向频发拥堵/缓行路段--执行开始时间:"
+
LocalDateTime
.
now
());
try
{
analysisProblemCrossDayService
.
insertAnalysisProblemCrossDay
();
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
"定时任务--干线协调方向频发拥堵/缓行路段--任务执行错误"
+
e
);
}
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 @
75173da9
...
...
@@ -434,5 +434,35 @@
where ( b.in_dir = a.dir_type OR b.out_dir = a.dir_type )
</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>
signal-optimize-data-compute/src/test/java/AnalysisProblemDayTaskTest.java
View file @
75173da9
...
...
@@ -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.dao.mapper.judgeanalysis.AnalysisProblemCrossDayMapper
;
import
org.junit.FixMethodOrder
;
...
...
@@ -12,6 +15,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
java.util.Date
;
/**
* @author fengyi
* @date
...
...
@@ -19,16 +24,48 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
(
classes
=
SignalOptimizeApplication
.
class
,
webEnvironment
=
SpringBootTest
.
WebEnvironment
.
RANDOM_PORT
)
@FixMethodOrder
(
MethodSorters
.
NAME_ASCENDING
)
@Slf4j
public
class
AnalysisProblemDayTaskTest
{
@Autowired
private
AnalysisProblemCrossDayMapper
analysisProblemCrossDayMapper
;
@Test
public
void
testProducerTrack
()
{
long
st
=
System
.
currentTimeMillis
();
analysisProblemCrossDayMapper
.
insertAnalysisProblemCrossDay
();
long
et
=
System
.
currentTimeMillis
();
System
.
out
.
println
((
et
-
st
)+
"ms"
);
public
void
testProducerTrack
()
{
DateTime
endTDateTime
=
DateUtil
.
date
();
//开始时间
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");
}
...
...
signal-optimize-service/src/main/java/net/wanji/opt/common/CommonUtils.java
View file @
75173da9
...
...
@@ -7,6 +7,7 @@ import org.apache.commons.lang3.StringUtils;
import
java.time.LocalTime
;
import
java.time.format.DateTimeFormatter
;
import
java.time.temporal.ChronoUnit
;
import
java.util.Objects
;
/**
* @author duanruiming
...
...
@@ -32,7 +33,7 @@ public class CommonUtils {
*/
public
static
String
getEventHappenDirName
(
String
dir
)
{
StringBuilder
stringBuilder
=
new
StringBuilder
();
if
(
StringUtils
.
isNotEmpty
(
dir
))
{
if
(
StringUtils
.
isNotEmpty
(
dir
)
&&
!
Objects
.
equals
(
"null"
,
dir
)
)
{
JSONArray
dirArr
=
JSONArray
.
parseArray
(
dir
);
for
(
int
i
=
0
;
i
<
dirArr
.
size
();
i
++)
{
String
dirName
=
DirEnum
.
getName
(
dirArr
.
getString
(
i
));
...
...
signal-optimize-service/src/main/java/net/wanji/opt/entity/eventoptimize/TEventOptimizeInfoVO.java
View file @
75173da9
...
...
@@ -42,4 +42,7 @@ public class TEventOptimizeInfoVO {
@ApiModelProperty
(
value
=
"时间数量"
)
private
Integer
eventNumber
;
@ApiModelProperty
(
value
=
"增加事件方向"
)
private
String
dirName
;
}
\ No newline at end of file
signal-optimize-service/src/main/java/net/wanji/opt/servicev2/eventoptimize/impl/TEventOptimizeInfoServiceImpl.java
View file @
75173da9
...
...
@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
net.wanji.databus.po.EventOptimizeCountPo
;
import
net.wanji.opt.common.CommonUtils
;
import
net.wanji.opt.common.EsDateIndexUtil
;
import
net.wanji.opt.dao.mapper.eventoptimize.TEventOptimizeInfoMapper
;
import
net.wanji.opt.entity.eventoptimize.TEventOptimizeInfo
;
...
...
@@ -70,6 +71,7 @@ public class TEventOptimizeInfoServiceImpl extends ServiceImpl<TEventOptimizeInf
TEventOptimizeInfoVO
tEventOptimizeInfoVO
=
new
TEventOptimizeInfoVO
();
BeanUtils
.
copyProperties
(
x
,
tEventOptimizeInfoVO
);
tEventOptimizeInfoVO
.
setEventLabal
(
getEventLabel1
(
x
.
getEventType
()));
tEventOptimizeInfoVO
.
setDirName
(
CommonUtils
.
getEventHappenDirName
(
x
.
getDir
()));
tEventOptimizeInfoVO
.
setOptStatus
(
1
);
return
tEventOptimizeInfoVO
;
}).
collect
(
Collectors
.
toList
());
...
...
signal-optimize-service/src/main/resources/mapper/eventoptimize/TEventOptimizeInfoMapper.xml
View file @
75173da9
...
...
@@ -39,13 +39,15 @@
<!-- 用于方案信号评价-路口优化记录查询(包含当日数据) -->
<select
id=
"selectCrossOptimize"
parameterType=
"map"
resultType=
"net.wanji.opt.entity.eventoptimize.TEventOptimizeInfo"
>
SELECT
cross_id,
current_algo AS event_type,
issue_time AS opt_start_time,
duration AS opt_duration,
DATE_ADD( issue_time, INTERVAL duration SECOND ) AS opt_end_time
a.cross_id,
a.current_algo AS event_type,
a.issue_time AS opt_start_time,
a.duration AS opt_duration,
DATE_ADD( issue_time, INTERVAL a.duration SECOND ) AS opt_end_time,
(case when current_algo=1 then concat('[',empty_dir,']') else b.dir end) dir
FROM
t_strategy_cross_result
t_strategy_cross_result a
left join t_event_info b on a.event_id=b.event_serial_number
WHERE
1=1
<if
test=
"startTime != null and endTime != null"
>
...
...
@@ -53,7 +55,7 @@
AND issue_time
<
#{endTime}
</if>
<if
test=
"crossId != null"
>
AND cross_id = #{crossId}
AND
a.
cross_id = #{crossId}
</if>
AND response_code = 200
</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