Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
W
wj-datacenter-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
wj-datacenter-platform
Commits
05d4c549
Commit
05d4c549
authored
Nov 24, 2024
by
duanruiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[add] 实时数据处理
parent
2a58f6fb
Changes
13
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
587 additions
and
12 deletions
+587
-12
CrossStrategyOptConsumerHandler.java
...nji/datacenter/kafka/CrossStrategyOptConsumerHandler.java
+336
-0
GreenBeltDataConsumerHandler.java
.../wanji/datacenter/kafka/GreenBeltDataConsumerHandler.java
+6
-2
PeriodDataConsumerHandler.java
...net/wanji/datacenter/kafka/PeriodDataConsumerHandler.java
+7
-7
CrossStrategyResultMapper.java
...et/wanji/datacenter/mapper/CrossStrategyResultMapper.java
+11
-0
StrategyGreenOptHistMapper.java
...t/wanji/datacenter/mapper/StrategyGreenOptHistMapper.java
+1
-1
ImbalanceAlgorithmDTO.java
.../net/wanji/datacenter/pojo/dto/ImbalanceAlgorithmDTO.java
+99
-0
CrossStrategyResultEntity.java
...nji/datacenter/pojo/entity/CrossStrategyResultEntity.java
+54
-0
StrategyGreenOptHistEntity.java
...ji/datacenter/pojo/entity/StrategyGreenOptHistEntity.java
+1
-1
CrossStrategyOptService.java
...net/wanji/datacenter/service/CrossStrategyOptService.java
+15
-0
CrossStrategyOptServiceImpl.java
.../datacenter/service/impl/CrossStrategyOptServiceImpl.java
+50
-0
DataProcessServiceImpl.java
...wanji/datacenter/service/impl/DataProcessServiceImpl.java
+1
-0
GreenBeltInfoServiceImpl.java
...nji/datacenter/service/impl/GreenBeltInfoServiceImpl.java
+1
-1
CrossStrategyResultMapper.xml
...e/src/main/resources/mapper/CrossStrategyResultMapper.xml
+5
-0
No files found.
wj-datacenter-service/src/main/java/net/wanji/datacenter/kafka/CrossStrategyOptConsumerHandler.java
0 → 100644
View file @
05d4c549
This diff is collapsed.
Click to expand it.
wj-datacenter-service/src/main/java/net/wanji/datacenter/kafka/GreenBeltDataConsumerHandler.java
View file @
05d4c549
...
...
@@ -10,9 +10,11 @@ import net.wanji.datacenter.pojo.vo.GreenBeltOptInfoVO;
import
net.wanji.datacenter.service.GreenBeltInfoService
;
import
net.wanji.datacenter.util.RedisUtils
;
import
org.apache.kafka.clients.consumer.Consumer
;
import
org.apache.kafka.clients.consumer.ConsumerRecord
;
import
org.springframework.kafka.annotation.KafkaListener
;
import
org.springframework.kafka.listener.KafkaListenerErrorHandler
;
import
org.springframework.kafka.listener.ListenerExecutionFailedException
;
import
org.springframework.kafka.support.Acknowledgment
;
import
org.springframework.messaging.Message
;
import
org.springframework.stereotype.Component
;
...
...
@@ -32,8 +34,9 @@ public class GreenBeltDataConsumerHandler implements KafkaListenerErrorHandler {
private
RedisUtils
redisUtils
;
@KafkaListener
(
topics
=
{
"green_belt_info_data"
},
groupId
=
"group2"
,
containerFactory
=
"kafkaListenerContainerFactory2"
)
public
void
receiveGreenBeltInfoData
(
String
message
)
throws
Exception
{
@KafkaListener
(
topics
=
{
"${kafka-consumer.greenBeltInfoDataTopic}"
},
groupId
=
"group1"
)
public
void
receiveGreenBeltInfoData
(
ConsumerRecord
<
Object
,
Object
>
record
,
Acknowledgment
acknowledgment
)
throws
Exception
{
String
message
=
String
.
valueOf
(
record
.
value
());
if
(
StringUtils
.
isNotBlank
(
message
))
{
GreenBeltOptInfoVO
greenBeltOptInfoVO
=
greenBeltInfoService
.
convertData
(
message
);
greenBeltInfoService
.
save
(
greenBeltOptInfoVO
);
...
...
@@ -44,6 +47,7 @@ public class GreenBeltDataConsumerHandler implements KafkaListenerErrorHandler {
String
chartKey
=
Constants
.
GREEN_ID_OPT_CHART_KEY
.
concat
(
greenBeltOptInfoVO
.
getGreenId
());
redisUtils
.
set
(
chartKey
,
JacksonUtils
.
getInstance
().
writeValueAsString
(
greenBeltChartVO
));
}
acknowledgment
.
acknowledge
();
}
...
...
wj-datacenter-service/src/main/java/net/wanji/datacenter/kafka/PeriodDataConsumerHandler.java
View file @
05d4c549
...
...
@@ -31,37 +31,37 @@ public class PeriodDataConsumerHandler implements KafkaListenerErrorHandler {
public
static
final
Map
<
String
,
List
<
CrossSnapshotDataDTO
>>
crossSnapshotDataMap
=
new
ConcurrentHashMap
<>();
@KafkaListener
(
topics
=
{
"${kafka-consumer.lanePeriodicDataTopic}"
},
groupId
=
"group"
)
@KafkaListener
(
topics
=
{
"${kafka-consumer.lanePeriodicDataTopic}"
},
groupId
=
"group
1
"
)
public
void
receiveLanePeriodicData
(
ConsumerRecord
<
Object
,
Object
>
record
,
Acknowledgment
acknowledgment
)
throws
Exception
{
String
originalData
=
String
.
valueOf
(
record
.
value
());
try
{
dataProcessService
.
laneSave
(
originalData
);
}
catch
(
Exception
e
)
{
log
.
error
(
"车道周期实时数据转换异常"
,
e
);
log
.
error
(
"车道
Lane
周期实时数据转换异常"
,
e
);
throw
new
Exception
();
}
acknowledgment
.
acknowledge
();
}
@KafkaListener
(
topics
=
{
"${kafka-consumer.crossPeriodicDataTopic}"
},
groupId
=
"group"
)
@KafkaListener
(
topics
=
{
"${kafka-consumer.crossPeriodicDataTopic}"
},
groupId
=
"group
1
"
)
public
void
receiveCrossPeriodicData
(
ConsumerRecord
<
Object
,
Object
>
record
,
Acknowledgment
acknowledgment
)
throws
Exception
{
String
originalData
=
String
.
valueOf
(
record
.
value
());
try
{
dataProcessService
.
crossSave
(
originalData
);
}
catch
(
Exception
e
)
{
log
.
error
(
"
车道周期
实时数据转换异常"
,
e
);
log
.
error
(
"
路口Cross
实时数据转换异常"
,
e
);
throw
new
Exception
();
}
acknowledgment
.
acknowledge
();
}
@KafkaListener
(
topics
=
{
"${kafka-consumer.dirPeriodicDataTopic}"
},
groupId
=
"group"
)
@KafkaListener
(
topics
=
{
"${kafka-consumer.dirPeriodicDataTopic}"
},
groupId
=
"group
1
"
)
public
void
receiveDirPeriodicData
(
ConsumerRecord
<
Object
,
Object
>
record
,
Acknowledgment
acknowledgment
)
throws
Exception
{
String
originalData
=
String
.
valueOf
(
record
.
value
());
try
{
dataProcessService
.
dirSave
(
originalData
);
}
catch
(
Exception
e
)
{
log
.
error
(
"
车道
周期实时数据转换异常"
,
e
);
log
.
error
(
"
方向Dir
周期实时数据转换异常"
,
e
);
throw
new
Exception
();
}
acknowledgment
.
acknowledge
();
...
...
@@ -73,7 +73,7 @@ public class PeriodDataConsumerHandler implements KafkaListenerErrorHandler {
try
{
dataProcessService
.
turnSave
(
originalData
);
}
catch
(
Exception
e
)
{
log
.
error
(
"
车道
周期实时数据转换异常"
,
e
);
log
.
error
(
"
转向Turn
周期实时数据转换异常"
,
e
);
throw
new
Exception
();
}
acknowledgment
.
acknowledge
();
...
...
wj-datacenter-service/src/main/java/net/wanji/datacenter/mapper/CrossStrategyResultMapper.java
0 → 100644
View file @
05d4c549
package
net
.
wanji
.
datacenter
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
net.wanji.datacenter.pojo.entity.CrossStrategyResultEntity
;
/**
* @author duanruiming
* @date 2024/11/23 16:25
*/
public
interface
CrossStrategyResultMapper
extends
BaseMapper
<
CrossStrategyResultEntity
>
{
}
wj-datacenter-service/src/main/java/net/wanji/datacenter/mapper/StrategyGreenOptHistMapper.java
View file @
05d4c549
package
net
.
wanji
.
datacenter
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
net.wanji.datacenter.pojo.StrategyGreenOptHistEntity
;
import
net.wanji.datacenter.pojo.
entity.
StrategyGreenOptHistEntity
;
/**
* @author duanruiming
...
...
wj-datacenter-service/src/main/java/net/wanji/datacenter/pojo/dto/ImbalanceAlgorithmDTO.java
0 → 100644
View file @
05d4c549
package
net
.
wanji
.
datacenter
.
pojo
.
dto
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
lombok.Data
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author duanruiming
* @date 2024/11/23 14:49
* @description 神思失衡算法结果
*/
@Data
@JsonIgnoreProperties
(
ignoreUnknown
=
true
)
@SuppressWarnings
(
"all"
)
public
class
ImbalanceAlgorithmDTO
{
// 万集路口编号
private
String
platformId
;
private
String
crossId
;
private
String
crossName
;
// 当前策略名称 0:无策略 1:绿灯空放 2:失衡 3:溢出
private
int
currentAlgo
;
// 策略请求时间(格式:yyyy-MM-dd HH:mm:ss)
@JsonFormat
(
shape
=
JsonFormat
.
Shape
.
STRING
,
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
requestTime
;
// 策略下发时间(格式:yyyy-MM-dd HH:mm:ss)
@JsonFormat
(
shape
=
JsonFormat
.
Shape
.
STRING
,
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
issueTime
;
// 发是否成功(200成功,其他失败)
private
int
responseCode
;
// 配时信息
private
List
<
Integer
>
timingPlan
;
// 入库时间
@JsonFormat
(
shape
=
JsonFormat
.
Shape
.
STRING
,
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
insertTime
;
private
int
rtnType
;
// 延长时间(当操作为2时有值)
private
int
extendTime
;
// 操作名称(0,不操作;1,切换相位;2延长相位)
private
int
blockRegion
;
// 溢出类型(0:未溢出 1:即将溢出 2:路口溢出 3:溢停)
private
int
blockType
;
// 当前相位剩余时长
private
int
countDown
;
// 实时数据时间戳
private
String
videoStamp
;
// 灯态数据时间戳
private
String
signalMachineStamp
;
// 当前相位控制车流方向
private
String
controlDir
;
private
Integer
code
;
private
String
msg
;
// 方案具体信息
private
SchemeData
data
;
@Data
public
static
class
SchemeData
{
@JsonProperty
(
"cycle"
)
private
int
cycle
;
@JsonProperty
(
"green_time"
)
private
List
<
Integer
>
greenTime
;
@JsonProperty
(
"cross_id"
)
private
String
crossId
;
@JsonProperty
(
"control_id"
)
private
Integer
controlId
;
@JsonProperty
(
"provider"
)
private
String
provider
;
@JsonProperty
(
"plan_no"
)
private
String
planNo
;
@JsonProperty
(
"offset"
)
private
Integer
offset
;
@JsonProperty
(
"ring_cnt"
)
private
Integer
ringCnt
;
@JsonProperty
(
"ring_set"
)
private
Map
<
String
,
Map
<
String
,
List
<
Integer
>>>
ringSet
;
@JsonProperty
(
"seq_id"
)
private
List
<
Integer
>
seqId
;
@JsonProperty
(
"red_time"
)
private
List
<
Integer
>
redTime
;
@JsonProperty
(
"yellow_time"
)
private
List
<
Integer
>
yellowTime
;
@JsonProperty
(
"green_flash"
)
private
List
<
Integer
>
green_flash
;
@JsonProperty
(
"person_flash"
)
private
List
<
Integer
>
person_flash
;
@JsonProperty
(
"min_green"
)
private
List
<
Integer
>
min_green
;
@JsonProperty
(
"max_green"
)
private
List
<
Integer
>
max_green
;
@JsonProperty
(
"direction"
)
private
List
<
Integer
[][]>
direction
;
}
}
wj-datacenter-service/src/main/java/net/wanji/datacenter/pojo/entity/CrossStrategyResultEntity.java
0 → 100644
View file @
05d4c549
package
net
.
wanji
.
datacenter
.
pojo
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @author duanruiming
* @date 2024/11/23 16:17
*/
@Data
@TableName
(
"t_strategy_cross_result"
)
public
class
CrossStrategyResultEntity
{
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Integer
id
;
@TableField
(
"cross_id"
)
private
String
crossId
;
@TableField
(
"cross_name"
)
private
String
crossName
;
@TableField
(
"current_algo"
)
private
Integer
currentAlgo
;
@TableField
(
"request_time"
)
private
Date
requestTime
;
@TableField
(
"issue_time"
)
private
Date
issueTime
;
@TableField
(
"response_code"
)
private
Integer
responseCode
;
@TableField
(
"timing_plan"
)
private
String
timingPlan
;
@TableField
(
"insert_time"
)
private
Date
insertTime
;
@TableField
(
"rtn_type"
)
private
Integer
rtnType
;
@TableField
(
"extend_time"
)
private
Integer
extendTime
;
@TableField
(
"block_region"
)
private
Integer
blockRegion
;
@TableField
(
"block_type"
)
private
Integer
blockType
;
@TableField
(
"count_down"
)
private
Integer
countDown
;
@TableField
(
"video_stamp"
)
private
String
videoStamp
;
@TableField
(
"signal_machine_stamp"
)
private
String
signalMachineStamp
;
@TableField
(
"control_dir"
)
private
String
controlDir
;
@TableField
(
"data"
)
private
String
data
;
}
wj-datacenter-service/src/main/java/net/wanji/datacenter/pojo/StrategyGreenOptHistEntity.java
→
wj-datacenter-service/src/main/java/net/wanji/datacenter/pojo/
entity/
StrategyGreenOptHistEntity.java
View file @
05d4c549
package
net
.
wanji
.
datacenter
.
pojo
;
package
net
.
wanji
.
datacenter
.
pojo
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
...
...
wj-datacenter-service/src/main/java/net/wanji/datacenter/service/CrossStrategyOptService.java
0 → 100644
View file @
05d4c549
package
net
.
wanji
.
datacenter
.
service
;
import
net.wanji.datacenter.pojo.dto.ImbalanceAlgorithmDTO
;
/**
* @author duanruiming
* @date 2024/11/23 16:12
*/
public
interface
CrossStrategyOptService
{
/**
* 溢出指标存储
*/
void
save
(
ImbalanceAlgorithmDTO
imbalanceAlgorithmDTO
);
}
wj-datacenter-service/src/main/java/net/wanji/datacenter/service/impl/CrossStrategyOptServiceImpl.java
0 → 100644
View file @
05d4c549
package
net
.
wanji
.
datacenter
.
service
.
impl
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
net.wanji.common.utils.tool.JacksonUtils
;
import
net.wanji.datacenter.mapper.CrossStrategyResultMapper
;
import
net.wanji.datacenter.pojo.dto.ImbalanceAlgorithmDTO
;
import
net.wanji.datacenter.pojo.entity.CrossStrategyResultEntity
;
import
net.wanji.datacenter.service.CrossStrategyOptService
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
/**
* @author duanruiming
* @date 2024/11/23 16:14
*/
@Service
public
class
CrossStrategyOptServiceImpl
implements
CrossStrategyOptService
{
@Resource
private
CrossStrategyResultMapper
crossStrategyResultMapper
;
@Override
public
void
save
(
ImbalanceAlgorithmDTO
dto
)
{
try
{
ObjectMapper
mapper
=
JacksonUtils
.
getInstance
();
CrossStrategyResultEntity
crossStrategyResultEntity
=
new
CrossStrategyResultEntity
();
crossStrategyResultEntity
.
setCrossId
(
dto
.
getPlatformId
());
crossStrategyResultEntity
.
setCrossName
(
dto
.
getCrossName
());
crossStrategyResultEntity
.
setCurrentAlgo
(
dto
.
getCurrentAlgo
());
crossStrategyResultEntity
.
setRequestTime
(
dto
.
getRequestTime
());
crossStrategyResultEntity
.
setIssueTime
(
dto
.
getIssueTime
());
crossStrategyResultEntity
.
setResponseCode
(
dto
.
getResponseCode
());
crossStrategyResultEntity
.
setTimingPlan
(
mapper
.
writeValueAsString
(
dto
.
getTimingPlan
()));
crossStrategyResultEntity
.
setInsertTime
(
dto
.
getInsertTime
());
crossStrategyResultEntity
.
setRtnType
(
dto
.
getRtnType
());
crossStrategyResultEntity
.
setExtendTime
(
dto
.
getExtendTime
());
crossStrategyResultEntity
.
setBlockRegion
(
dto
.
getBlockRegion
());
crossStrategyResultEntity
.
setBlockType
(
dto
.
getBlockType
());
crossStrategyResultEntity
.
setCountDown
(
dto
.
getCountDown
());
crossStrategyResultEntity
.
setVideoStamp
(
dto
.
getVideoStamp
());
crossStrategyResultEntity
.
setSignalMachineStamp
(
dto
.
getSignalMachineStamp
());
crossStrategyResultEntity
.
setControlDir
(
dto
.
getControlDir
());
crossStrategyResultEntity
.
setData
(
mapper
.
writeValueAsString
(
dto
.
getData
()));
crossStrategyResultMapper
.
insert
(
crossStrategyResultEntity
);
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
e
);
}
}
}
wj-datacenter-service/src/main/java/net/wanji/datacenter/service/impl/DataProcessServiceImpl.java
View file @
05d4c549
...
...
@@ -123,6 +123,7 @@ public class DataProcessServiceImpl implements DataProcessService {
String
timeStamp
=
crossPeriodDataDTO
.
getTimeStamp
();
SimpleDateFormat
dateFormat
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss.SSS"
);
List
<
CrossDataRealtimePO
>
eventList
=
crossPeriodDataDTO
.
getEventList
();
CrossDataRealtimePO
crossDataRealtimePO
=
new
CrossDataRealtimePO
();
if
(!
CollectionUtils
.
isEmpty
(
eventList
))
{
List
<
CrossDataRealtimePO
>
crossDataRealtimePOS
=
eventList
;
crossDataRealtimeMapper
.
deleteBatch
(
crossDataRealtimePOS
.
stream
().
map
(
CrossDataRealtimePO:
:
getCrossId
).
collect
(
Collectors
.
toList
()));
...
...
wj-datacenter-service/src/main/java/net/wanji/datacenter/service/impl/GreenBeltInfoServiceImpl.java
View file @
05d4c549
...
...
@@ -5,8 +5,8 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import
net.wanji.common.utils.tool.JacksonUtils
;
import
net.wanji.datacenter.common.Constants
;
import
net.wanji.datacenter.mapper.StrategyGreenOptHistMapper
;
import
net.wanji.datacenter.pojo.StrategyGreenOptHistEntity
;
import
net.wanji.datacenter.pojo.dto.GreenBeltKafkaDTO
;
import
net.wanji.datacenter.pojo.entity.StrategyGreenOptHistEntity
;
import
net.wanji.datacenter.pojo.vo.GreenBeltChartVO
;
import
net.wanji.datacenter.pojo.vo.GreenBeltOptInfoVO
;
import
net.wanji.datacenter.service.GreenBeltInfoService
;
...
...
wj-datacenter-service/src/main/resources/mapper/CrossStrategyResultMapper.xml
0 → 100644
View file @
05d4c549
<?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.datacenter.mapper.CrossStrategyResultMapper"
>
</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