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
85cbc010
Commit
85cbc010
authored
Apr 24, 2025
by
zhoushiguang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改为批量插入
parent
05a703a4
Changes
6
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
254 additions
and
101 deletions
+254
-101
AnalysisProblemAndStrategyDayMapper.java
...er/judgeanalysis/AnalysisProblemAndStrategyDayMapper.java
+7
-3
AnalysisProblemAndStrategyDayService.java
...2/judgeanalysis/AnalysisProblemAndStrategyDayService.java
+5
-1
AnalysisProblemAndStrategyDayImpl.java
...judgeanalysis/impl/AnalysisProblemAndStrategyDayImpl.java
+80
-29
AnalysisProblemAndStrategyDayTask.java
...net/wanji/opt/task/AnalysisProblemAndStrategyDayTask.java
+14
-2
AnalysisProblemAndStrategyDayMapper.xml
...per/judgeanalysis/AnalysisProblemAndStrategyDayMapper.xml
+91
-66
EventOptimizeTaskTest.java
...ize-data-compute/src/test/java/EventOptimizeTaskTest.java
+57
-0
No files found.
signal-optimize-data-compute/src/main/java/net/wanji/opt/dao/mapper/judgeanalysis/AnalysisProblemAndStrategyDayMapper.java
View file @
85cbc010
...
@@ -9,9 +9,13 @@ import java.util.List;
...
@@ -9,9 +9,13 @@ import java.util.List;
import
java.util.Map
;
import
java.util.Map
;
public
interface
AnalysisProblemAndStrategyDayMapper
extends
BaseMapper
<
AnalysisProblemAndStrategyDay
>
{
public
interface
AnalysisProblemAndStrategyDayMapper
extends
BaseMapper
<
AnalysisProblemAndStrategyDay
>
{
List
<
AnalysisProblemAndStrategyDay
>
selectCrossEvent
();
List
<
AnalysisProblemAndStrategyDay
>
selectCrossEvent
(
@Param
(
"dtStart"
)
Integer
dtStart
,
@Param
(
"dtEnd"
)
Integer
dtEnd
);
List
<
AnalysisProblemAndStrategyDay
>
selectGreenEvent
();
Integer
insertProblemAndStrategy
(
AnalysisProblemAndStrategyDay
analysisProblemAndStrategyDay
);
List
<
AnalysisProblemAndStrategyDay
>
selectGreenEvent
(
@Param
(
"dtStart"
)
Integer
dtStart
,
@Param
(
"dtEnd"
)
Integer
dtEnd
);
Integer
insertProblemAndStrategy
(
List
<
AnalysisProblemAndStrategyDay
>
list
);
AnalysisProblemAndStrategyDay
getGreenStrategy
(
@Param
(
"greenID"
)
String
greenID
,
@Param
(
"time"
)
String
time
);
AnalysisProblemAndStrategyDay
getGreenStrategy
(
@Param
(
"greenID"
)
String
greenID
,
@Param
(
"time"
)
String
time
);
AnalysisProblemAndStrategyDay
getCrossStrategy
(
@Param
(
"crossID"
)
String
crossID
,
@Param
(
"time"
)
String
time
,
@Param
(
"eventSerialNumber"
)
String
eventSerialNumber
);
AnalysisProblemAndStrategyDay
getCrossStrategy
(
@Param
(
"crossID"
)
String
crossID
,
@Param
(
"time"
)
String
time
,
@Param
(
"eventSerialNumber"
)
String
eventSerialNumber
);
}
}
signal-optimize-data-compute/src/main/java/net/wanji/opt/servicev2/judgeanalysis/AnalysisProblemAndStrategyDayService.java
View file @
85cbc010
package
net
.
wanji
.
opt
.
servicev2
.
judgeanalysis
;
package
net
.
wanji
.
opt
.
servicev2
.
judgeanalysis
;
import
org.apache.ibatis.annotations.Param
;
public
interface
AnalysisProblemAndStrategyDayService
{
public
interface
AnalysisProblemAndStrategyDayService
{
public
void
selectCountByType
();
public
void
selectCountByTypeOfCross
(
Integer
dtStart
,
Integer
dtEnd
);
public
void
selectCountByTypeOfGreen
(
Integer
dtStart
,
Integer
dtEnd
);
}
}
signal-optimize-data-compute/src/main/java/net/wanji/opt/servicev2/judgeanalysis/impl/AnalysisProblemAndStrategyDayImpl.java
View file @
85cbc010
...
@@ -12,7 +12,11 @@ import javax.annotation.Resource;
...
@@ -12,7 +12,11 @@ import javax.annotation.Resource;
import
java.time.LocalDate
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.time.format.DateTimeFormatter
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
/**
* <p>
* <p>
...
@@ -29,15 +33,20 @@ public class AnalysisProblemAndStrategyDayImpl extends ServiceImpl<AnalysisProbl
...
@@ -29,15 +33,20 @@ public class AnalysisProblemAndStrategyDayImpl extends ServiceImpl<AnalysisProbl
private
AnalysisProblemAndStrategyDayMapper
analysisProblemAndStrategyDayMapper
;
private
AnalysisProblemAndStrategyDayMapper
analysisProblemAndStrategyDayMapper
;
public
void
selectCountByType
(
)
{
public
void
selectCountByType
OfGreen
(
Integer
dtStart
,
Integer
dtEnd
)
{
StopWatch
stopWatch
=
new
StopWatch
(
"事件优化时长计算监控"
);
StopWatch
stopWatch
=
new
StopWatch
(
"
干线
事件优化时长计算监控"
);
stopWatch
.
start
();
stopWatch
.
start
();
//查询路口事件数据
//查询干线事件数据
List
<
AnalysisProblemAndStrategyDay
>
crossEvenList
=
analysisProblemAndStrategyDayMapper
.
selectCrossEvent
();
List
<
AnalysisProblemAndStrategyDay
>
greenEvenList
=
analysisProblemAndStrategyDayMapper
.
selectGreenEvent
(
dtStart
,
dtEnd
);
if
(
crossEvenList
.
size
()
>
0
)
{
//循环查找路口事件数据是否有策略下发
int
size
=
greenEvenList
.
size
();
for
(
AnalysisProblemAndStrategyDay
vo
:
crossEvenList
)
{
AnalysisProblemAndStrategyDay
temp
=
analysisProblemAndStrategyDayMapper
.
getCrossStrategy
(
vo
.
getCrossId
(),
vo
.
getHappenStartTime
(),
vo
.
getEventSerialNumber
());
if
(
greenEvenList
.
size
()
>
0
)
{
long
st
=
System
.
currentTimeMillis
();
List
<
AnalysisProblemAndStrategyDay
>
saveList
=
new
ArrayList
<>();
// greenEvenList.stream().filter(o->o.getGreenId().equals("1")).collect(Collectors.toList());
long
total
=
0
;
for
(
AnalysisProblemAndStrategyDay
vo
:
greenEvenList
)
{
AnalysisProblemAndStrategyDay
temp
=
analysisProblemAndStrategyDayMapper
.
getGreenStrategy
(
vo
.
getGreenId
(),
vo
.
getHappenStartTime
());
if
(
temp
==
null
)
{
if
(
temp
==
null
)
{
vo
.
setOptStatus
(
0
);
vo
.
setOptStatus
(
0
);
}
else
{
}
else
{
...
@@ -46,23 +55,49 @@ public class AnalysisProblemAndStrategyDayImpl extends ServiceImpl<AnalysisProbl
...
@@ -46,23 +55,49 @@ public class AnalysisProblemAndStrategyDayImpl extends ServiceImpl<AnalysisProbl
vo
.
setOptEndTime
(
temp
.
getOptEndTime
());
vo
.
setOptEndTime
(
temp
.
getOptEndTime
());
vo
.
setOptDuration
(
temp
.
getOptDuration
());
vo
.
setOptDuration
(
temp
.
getOptDuration
());
}
}
// LocalDate previousDay = LocalDate.now().minusDays(1);
LocalDate
previousDay
=
LocalDate
.
now
().
minusDays
(
1
);
// String formattedDate = previousDay.format(DateTimeFormatter.ofPattern("yyyyMMdd"));
String
formattedDate
=
previousDay
.
format
(
DateTimeFormatter
.
ofPattern
(
"yyyyMMdd"
));
vo
.
setDt
(
vo
.
getDt
());
vo
.
setDt
(
formattedDate
);
vo
.
setInsertTime
(
LocalDateTime
.
now
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)));
vo
.
setInsertTime
(
LocalDateTime
.
now
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)));
//路口数据设置干线ID为不存在的ID
//干线数据设置路口ID为不存在的null字符串
vo
.
setGreenId
(
"-1"
);
vo
.
setCrossId
(
"null"
);
//写入数据--Error
saveList
.
add
(
vo
);
analysisProblemAndStrategyDayMapper
.
insertProblemAndStrategy
(
vo
);
//写入数据
if
(
saveList
.
size
()
%
100
==
0
)
{
analysisProblemAndStrategyDayMapper
.
insertProblemAndStrategy
(
saveList
);
long
et
=
System
.
currentTimeMillis
();
total
+=
100
;
log
.
info
(
"干线事件优化记录挂接-批量插入优化挂接记录耗时:{}ms,已入库数量:{},总记录数:{}"
,
et
-
st
,
total
,
size
);
st
=
et
;
}
}
if
(
saveList
.
size
()
>
0
)
{
total
+=
saveList
.
size
();
analysisProblemAndStrategyDayMapper
.
insertProblemAndStrategy
(
saveList
);
long
et
=
System
.
currentTimeMillis
();
log
.
info
(
"干线事件优化记录挂接-批量插入优化挂接记录耗时:{}ms,已入库数量:{},总记录数:{}"
,
et
-
st
,
total
,
size
);
saveList
.
clear
();
}
}
}
}
stopWatch
.
stop
();
log
.
info
(
"干线事件优化时长计算监控 耗时:{}ms"
,
stopWatch
.
getTotalTimeMillis
());
//查询干线事件数据
}
List
<
AnalysisProblemAndStrategyDay
>
greenEvenList
=
analysisProblemAndStrategyDayMapper
.
selectGreenEvent
();
if
(
greenEvenList
.
size
()
>
0
)
{
public
void
selectCountByTypeOfCross
(
Integer
dtStart
,
Integer
dtEnd
)
{
for
(
AnalysisProblemAndStrategyDay
vo
:
greenEvenList
)
{
StopWatch
stopWatch
=
new
StopWatch
(
"路口事件优化时长计算监控"
);
AnalysisProblemAndStrategyDay
temp
=
analysisProblemAndStrategyDayMapper
.
getGreenStrategy
(
vo
.
getGreenId
(),
vo
.
getHappenStartTime
());
stopWatch
.
start
();
//查询路口事件数据
List
<
AnalysisProblemAndStrategyDay
>
crossEvenList
=
analysisProblemAndStrategyDayMapper
.
selectCrossEvent
(
dtStart
,
dtEnd
);
int
size
=
crossEvenList
.
size
();
if
(
crossEvenList
.
size
()
>
0
)
{
long
st
=
System
.
currentTimeMillis
();
long
total
=
0
;
//循环查找路口事件数据是否有策略下发
List
<
AnalysisProblemAndStrategyDay
>
saveList
=
new
ArrayList
<>();
for
(
AnalysisProblemAndStrategyDay
vo
:
crossEvenList
)
{
AnalysisProblemAndStrategyDay
temp
=
analysisProblemAndStrategyDayMapper
.
getCrossStrategy
(
vo
.
getCrossId
(),
vo
.
getHappenStartTime
(),
vo
.
getEventSerialNumber
());
if
(
temp
==
null
)
{
if
(
temp
==
null
)
{
vo
.
setOptStatus
(
0
);
vo
.
setOptStatus
(
0
);
}
else
{
}
else
{
...
@@ -71,18 +106,34 @@ public class AnalysisProblemAndStrategyDayImpl extends ServiceImpl<AnalysisProbl
...
@@ -71,18 +106,34 @@ public class AnalysisProblemAndStrategyDayImpl extends ServiceImpl<AnalysisProbl
vo
.
setOptEndTime
(
temp
.
getOptEndTime
());
vo
.
setOptEndTime
(
temp
.
getOptEndTime
());
vo
.
setOptDuration
(
temp
.
getOptDuration
());
vo
.
setOptDuration
(
temp
.
getOptDuration
());
}
}
LocalDate
previousDay
=
LocalDate
.
now
().
minusDays
(
1
);
String
formattedDate
=
previousDay
.
format
(
DateTimeFormatter
.
ofPattern
(
"yyyyMMdd"
));
// LocalDate previousDay = LocalDate.now().minusDays(1);
vo
.
setDt
(
formattedDate
);
// String formattedDate = previousDay.format(DateTimeFormatter.ofPattern("yyyyMMdd"));
vo
.
setDt
(
vo
.
getDt
());
vo
.
setInsertTime
(
LocalDateTime
.
now
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)));
vo
.
setInsertTime
(
LocalDateTime
.
now
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)));
//干线数据设置路口ID为不存在的null字符串
//路口数据设置干线ID为不存在的ID
vo
.
setCrossId
(
"null"
);
vo
.
setGreenId
(
"-1"
);
//写入数据
saveList
.
add
(
vo
);
analysisProblemAndStrategyDayMapper
.
insertProblemAndStrategy
(
vo
);
//写入数据--Error
if
(
saveList
.
size
()
%
100
==
0
)
{
analysisProblemAndStrategyDayMapper
.
insertProblemAndStrategy
(
saveList
);
long
et
=
System
.
currentTimeMillis
();
total
+=
100
;
log
.
info
(
"干线事件优化记录挂接-批量插入优化挂接记录耗时:{}ms,已入库数量:{},总记录数:{}"
,
et
-
st
,
total
,
size
);
st
=
et
;
}
}
}
if
(
saveList
.
size
()
>
0
)
{
analysisProblemAndStrategyDayMapper
.
insertProblemAndStrategy
(
saveList
);
long
et
=
System
.
currentTimeMillis
();
total
+=
saveList
.
size
();
log
.
info
(
"干线事件优化记录挂接-批量插入优化挂接记录耗时:{}ms,已入库数量:{},总记录数:{}"
,
et
-
st
,
total
,
size
);
saveList
.
clear
();
}
}
}
stopWatch
.
stop
();
stopWatch
.
stop
();
log
.
info
(
"
事件优化记录优化耗时:{}ms"
,
stopWatch
.
getTotalTimeMillis
());
log
.
info
(
"
路口事件优化时长计算监控总耗时:{}ms"
,
stopWatch
.
getTotalTimeMillis
());
}
}
...
...
signal-optimize-data-compute/src/main/java/net/wanji/opt/task/AnalysisProblemAndStrategyDayTask.java
View file @
85cbc010
...
@@ -22,9 +22,21 @@ public class AnalysisProblemAndStrategyDayTask {
...
@@ -22,9 +22,21 @@ public class AnalysisProblemAndStrategyDayTask {
private
AnalysisProblemAndStrategyDayService
analysisProblemAndStrategyDayService
;
private
AnalysisProblemAndStrategyDayService
analysisProblemAndStrategyDayService
;
@Scheduled
(
cron
=
"0 15 1 * * ?"
)
@Scheduled
(
cron
=
"0 15 1 * * ?"
)
public
void
task
()
{
public
void
task
Cross
()
{
try
{
try
{
analysisProblemAndStrategyDayService
.
selectCountByType
();
analysisProblemAndStrategyDayService
.
selectCountByTypeOfCross
(
null
,
null
);
}
catch
(
Exception
e
)
{
log
.
error
(
"获取事件优化记录异常"
,
e
);
}
}
@Scheduled
(
cron
=
"0 15 1 * * ?"
)
public
void
taskGreen
()
{
try
{
analysisProblemAndStrategyDayService
.
selectCountByTypeOfGreen
(
null
,
null
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
"获取事件优化记录异常"
,
e
);
log
.
error
(
"获取事件优化记录异常"
,
e
);
}
}
...
...
signal-optimize-data-compute/src/main/resources/mapper/judgeanalysis/AnalysisProblemAndStrategyDayMapper.xml
View file @
85cbc010
This diff is collapsed.
Click to expand it.
signal-optimize-data-compute/src/test/java/EventOptimizeTaskTest.java
0 → 100644
View file @
85cbc010
/**
*
*/
import
cn.hutool.core.date.DateUtil
;
import
net.wanji.opt.SignalOptimizeApplication
;
import
net.wanji.opt.dao.mapper.judgeanalysis.AnalysisProblemCrossDayMapper
;
import
net.wanji.opt.servicev2.judgeanalysis.AnalysisProblemAndStrategyDayService
;
import
org.junit.FixMethodOrder
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.junit.runners.MethodSorters
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
java.util.Date
;
/**
* @author fengyi
* @date
*/
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
(
classes
=
SignalOptimizeApplication
.
class
,
webEnvironment
=
SpringBootTest
.
WebEnvironment
.
RANDOM_PORT
)
@FixMethodOrder
(
MethodSorters
.
NAME_ASCENDING
)
public
class
EventOptimizeTaskTest
{
@Autowired
private
AnalysisProblemAndStrategyDayService
analysisProblemAndStrategyDayService
;
@Test
public
void
taskGreen
()
{
try
{
//analysisProblemAndStrategyDayService.selectCountByTypeOfCross();
Integer
dtStart
=
20250423
;
// Integer.valueOf(DateUtil.beginOfMonth(new Date()).toString("yyyyMMdd"));
Integer
dtEnd
=
20250423
;
// Integer.valueOf(DateUtil.format(new Date(),"yyyyMMdd"));
analysisProblemAndStrategyDayService
.
selectCountByTypeOfGreen
(
dtStart
,
dtEnd
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
@Test
public
void
taskCross
()
{
try
{
Integer
dtStart
=
20250423
;
// Integer.valueOf(DateUtil.beginOfMonth(new Date()).toString("yyyyMMdd"));
Integer
dtEnd
=
20250423
;
//Integer.valueOf(DateUtil.format(new Date(),"yyyyMMdd"));
analysisProblemAndStrategyDayService
.
selectCountByTypeOfCross
(
dtStart
,
dtEnd
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
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