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
cac32575
Commit
cac32575
authored
Jul 23, 2024
by
duanruiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[update] 城市大脑-路口实时数据保存优化
parent
5c91161c
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
113 additions
and
10 deletions
+113
-10
HoloForeignDeviceMapper.java
...ava/net/wanji/opt/dao/mapper/HoloForeignDeviceMapper.java
+18
-0
ConsumerHandler.java
...ce/src/main/java/net/wanji/opt/kafka/ConsumerHandler.java
+44
-10
ForeignDevicePO.java
...rvice/src/main/java/net/wanji/opt/po/ForeignDevicePO.java
+43
-0
HoloForeignDeviceMapper.xml
...ice/src/main/resources/mapper/HoloForeignDeviceMapper.xml
+8
-0
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/dao/mapper/HoloForeignDeviceMapper.java
0 → 100644
View file @
cac32575
package
net
.
wanji
.
opt
.
dao
.
mapper
;
import
com.baomidou.dynamic.datasource.annotation.DS
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
net.wanji.opt.po.ForeignDevicePO
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
/**
* @author duanruiming
* @date 2024/07/22 10:54
*/
@Repository
@DS
(
"holo"
)
public
interface
HoloForeignDeviceMapper
extends
BaseMapper
<
ForeignDevicePO
>
{
List
<
ForeignDevicePO
>
selectDistinctDevice
();
}
signal-optimize-service/src/main/java/net/wanji/opt/kafka/ConsumerHandler.java
View file @
cac32575
...
@@ -9,6 +9,8 @@ import net.wanji.common.utils.tool.JacksonUtils;
...
@@ -9,6 +9,8 @@ import net.wanji.common.utils.tool.JacksonUtils;
import
net.wanji.common.utils.tool.StringUtils
;
import
net.wanji.common.utils.tool.StringUtils
;
import
net.wanji.databus.dao.mapper.*
;
import
net.wanji.databus.dao.mapper.*
;
import
net.wanji.databus.po.*
;
import
net.wanji.databus.po.*
;
import
net.wanji.opt.dao.mapper.HoloForeignDeviceMapper
;
import
net.wanji.opt.po.ForeignDevicePO
;
import
org.apache.kafka.clients.consumer.Consumer
;
import
org.apache.kafka.clients.consumer.Consumer
;
import
org.apache.kafka.clients.consumer.ConsumerRecord
;
import
org.apache.kafka.clients.consumer.ConsumerRecord
;
import
org.springframework.kafka.annotation.KafkaListener
;
import
org.springframework.kafka.annotation.KafkaListener
;
...
@@ -20,10 +22,7 @@ import org.springframework.stereotype.Component;
...
@@ -20,10 +22,7 @@ import org.springframework.stereotype.Component;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.CollectionUtils
;
import
java.util.ArrayList
;
import
java.util.*
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
/**
/**
...
@@ -43,6 +42,7 @@ public class ConsumerHandler implements KafkaListenerErrorHandler {
...
@@ -43,6 +42,7 @@ public class ConsumerHandler implements KafkaListenerErrorHandler {
private
final
CrossLaneDataHistMapper
crossLaneDataHistMapper
;
private
final
CrossLaneDataHistMapper
crossLaneDataHistMapper
;
private
final
CrossDataRealtimeMapper
crossDataRealTimeMapper
;
private
final
CrossDataRealtimeMapper
crossDataRealTimeMapper
;
private
final
CrossDataHistMapper
crossDataHistMapper
;
private
final
CrossDataHistMapper
crossDataHistMapper
;
private
final
HoloForeignDeviceMapper
holoForeignDeviceMapper
;
@Transactional
@Transactional
@KafkaListener
(
topics
=
{
"cross_real_time_lane_data"
})
@KafkaListener
(
topics
=
{
"cross_real_time_lane_data"
})
...
@@ -69,6 +69,17 @@ public class ConsumerHandler implements KafkaListenerErrorHandler {
...
@@ -69,6 +69,17 @@ public class ConsumerHandler implements KafkaListenerErrorHandler {
}
}
}
}
private
Map
<
String
,
String
>
getDeviceNoMap
()
{
List
<
ForeignDevicePO
>
foreignDevicePOS
=
holoForeignDeviceMapper
.
selectDistinctDevice
();
Map
<
String
,
String
>
deviceMap
=
new
HashMap
<>();
if
(!
CollectionUtils
.
isEmpty
(
foreignDevicePOS
))
{
foreignDevicePOS
.
forEach
(
item
->
{
deviceMap
.
put
(
item
.
getDeviceNo
(),
item
.
getCrossId
());
});
}
return
deviceMap
;
}
@Transactional
@Transactional
@KafkaListener
(
topics
=
{
"cross_real_time_data"
})
@KafkaListener
(
topics
=
{
"cross_real_time_data"
})
public
void
receiveCrossRealTimeData
(
ConsumerRecord
<
Object
,
Object
>
record
,
Acknowledgment
acknowledgment
)
throws
Exception
{
public
void
receiveCrossRealTimeData
(
ConsumerRecord
<
Object
,
Object
>
record
,
Acknowledgment
acknowledgment
)
throws
Exception
{
...
@@ -79,14 +90,17 @@ public class ConsumerHandler implements KafkaListenerErrorHandler {
...
@@ -79,14 +90,17 @@ public class ConsumerHandler implements KafkaListenerErrorHandler {
if
(
Objects
.
nonNull
(
map
)
&&
!
map
.
isEmpty
())
{
if
(
Objects
.
nonNull
(
map
)
&&
!
map
.
isEmpty
())
{
List
<
CrossDataRealtimePO
>
crossDataRealtimePOS
=
map
.
get
(
"crossRealTimeData"
);
List
<
CrossDataRealtimePO
>
crossDataRealtimePOS
=
map
.
get
(
"crossRealTimeData"
);
if
(!
CollectionUtils
.
isEmpty
(
crossDataRealtimePOS
))
{
if
(!
CollectionUtils
.
isEmpty
(
crossDataRealtimePOS
))
{
crossDataRealTimeMapper
.
deleteBatch
(
crossDataRealtimePOS
.
stream
().
map
(
CrossDataRealtimePO:
:
getCrossId
).
collect
(
Collectors
.
toList
()));
Map
<
String
,
String
>
deviceNoMap
=
getDeviceNoMap
();
crossDataRealTimeMapper
.
insertBatch
(
crossDataRealtimePOS
);
List
<
CrossDataRealtimePO
>
noWanjiList
=
getNoWjList
(
crossDataRealtimePOS
,
deviceNoMap
);
List
<
CrossDataHistPO
>
crossDataHistPOS
=
new
ArrayList
<>(
crossDataRealtimePOS
.
size
());
if
(!
CollectionUtils
.
isEmpty
(
noWanjiList
))
{
BeanListUtils
.
populateList
(
crossDataRealtimePOS
,
crossDataHistPOS
,
CrossDataHistPO
.
class
);
crossDataRealTimeSave
(
noWanjiList
);
crossDataHistMapper
.
insertBatch
(
crossDataHistPOS
);
}
List
<
CrossDataRealtimePO
>
wanjiList
=
crossDataRealtimePOS
.
stream
().
filter
(
po
->
!
deviceNoMap
.
containsKey
(
po
.
getCrossId
())).
collect
(
Collectors
.
toList
());
if
(!
CollectionUtils
.
isEmpty
(
wanjiList
))
{
crossDataRealTimeSave
(
wanjiList
);
}
}
}
}
}
}
}
acknowledgment
.
acknowledge
();
acknowledgment
.
acknowledge
();
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
...
@@ -95,6 +109,26 @@ public class ConsumerHandler implements KafkaListenerErrorHandler {
...
@@ -95,6 +109,26 @@ public class ConsumerHandler implements KafkaListenerErrorHandler {
}
}
}
}
private
List
<
CrossDataRealtimePO
>
getNoWjList
(
List
<
CrossDataRealtimePO
>
crossDataRealtimePOS
,
Map
<
String
,
String
>
deviceNoMap
)
{
List
<
CrossDataRealtimePO
>
noWanjiList
=
new
ArrayList
<>();
for
(
CrossDataRealtimePO
realtimePO
:
crossDataRealtimePOS
)
{
String
crossId
=
realtimePO
.
getCrossId
();
if
(
deviceNoMap
.
containsKey
(
crossId
))
{
realtimePO
.
setCrossId
(
deviceNoMap
.
get
(
crossId
));
noWanjiList
.
add
(
realtimePO
);
}
}
return
noWanjiList
;
}
private
void
crossDataRealTimeSave
(
List
<
CrossDataRealtimePO
>
crossDataRealtimePOS
)
{
crossDataRealTimeMapper
.
deleteBatch
(
crossDataRealtimePOS
.
stream
().
map
(
CrossDataRealtimePO:
:
getCrossId
).
collect
(
Collectors
.
toList
()));
crossDataRealTimeMapper
.
insertBatch
(
crossDataRealtimePOS
);
List
<
CrossDataHistPO
>
crossDataHistPOS
=
new
ArrayList
<>(
crossDataRealtimePOS
.
size
());
BeanListUtils
.
populateList
(
crossDataRealtimePOS
,
crossDataHistPOS
,
CrossDataHistPO
.
class
);
crossDataHistMapper
.
insertBatch
(
crossDataHistPOS
);
}
@Transactional
@Transactional
@KafkaListener
(
topics
=
{
"cross_real_time_dir_data"
})
@KafkaListener
(
topics
=
{
"cross_real_time_dir_data"
})
public
void
receiveCrossRealTimeDirData
(
ConsumerRecord
<
Object
,
Object
>
record
,
Acknowledgment
acknowledgment
)
throws
Exception
{
public
void
receiveCrossRealTimeDirData
(
ConsumerRecord
<
Object
,
Object
>
record
,
Acknowledgment
acknowledgment
)
throws
Exception
{
...
...
signal-optimize-service/src/main/java/net/wanji/opt/po/ForeignDevicePO.java
0 → 100644
View file @
cac32575
package
net
.
wanji
.
opt
.
po
;
import
lombok.Data
;
import
java.util.Date
;
/**
* 外部设备表
*/
@Data
public
class
ForeignDevicePO
{
/** */
private
Integer
id
;
private
String
laneId
;
private
String
code
;
private
Integer
sort
;
private
Integer
type
;
private
Integer
dir
;
private
Integer
turn
;
private
Integer
category
;
private
String
crossId
;
private
String
rid
;
private
String
segmentId
;
private
Double
length
;
private
Double
width
;
private
String
wkt
;
private
Date
gmtCreate
;
private
Date
gmtModified
;
private
Double
endAngle
;
private
String
manufacturer
;
private
String
crossName
;
private
String
signalIp
;
private
Integer
signalId
;
private
Double
crossLon
;
private
Double
crossLat
;
private
String
deviceType
;
private
Integer
sectionNo
;
private
Double
deviceLon
;
private
Double
deviceLat
;
private
String
deviceIp
;
private
String
deviceNo
;
}
\ No newline at end of file
signal-optimize-service/src/main/resources/mapper/HoloForeignDeviceMapper.xml
0 → 100644
View file @
cac32575
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"net.wanji.opt.dao.mapper.HoloForeignDeviceMapper"
>
<select
id=
"selectDistinctDevice"
resultType=
"net.wanji.opt.po.ForeignDevicePO"
>
select distinct cross_id, device_no from t_foreign_device where cross_id != device_no
</select>
</mapper>
\ No newline at end of file
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