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
acb62a59
Commit
acb62a59
authored
Jan 04, 2025
by
zhoushiguang
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://106.120.201.126:14725/signal/traffic-signal-platform
parents
6d06f3ed
87055487
Changes
8
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
97 additions
and
7 deletions
+97
-7
Double2TwoDecimalPlacesSerializer.java
...t/wanji/opt/config/Double2TwoDecimalPlacesSerializer.java
+4
-1
CrossIndexController.java
.../wanji/opt/controller/signalopt/CrossIndexController.java
+17
-0
CrossIndexService.java
...rc/main/java/net/wanji/opt/service/CrossIndexService.java
+9
-0
CrossIndexServiceImpl.java
...ava/net/wanji/opt/service/impl/CrossIndexServiceImpl.java
+31
-4
DoubleToTwoDecimalPlacesSerializer.java
...ji/databus/config/DoubleToTwoDecimalPlacesSerializer.java
+5
-1
CrossDirDataHistMapper.java
.../net/wanji/databus/dao/mapper/CrossDirDataHistMapper.java
+7
-0
CrossDirStatusDataPO.java
.../main/java/net/wanji/databus/po/CrossDirStatusDataPO.java
+23
-0
CrossDirDataHistMapper.xml
...abus/src/main/resources/mapper/CrossDirDataHistMapper.xml
+1
-1
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/config/Double2TwoDecimalPlacesSerializer.java
View file @
acb62a59
...
...
@@ -5,6 +5,7 @@ import com.fasterxml.jackson.databind.JsonSerializer;
import
com.fasterxml.jackson.databind.SerializerProvider
;
import
java.io.IOException
;
import
java.math.BigDecimal
;
import
java.text.DecimalFormat
;
/**
...
...
@@ -17,7 +18,9 @@ public class Double2TwoDecimalPlacesSerializer extends JsonSerializer<Double> {
@Override
public
void
serialize
(
Double
value
,
JsonGenerator
gen
,
SerializerProvider
serializers
)
throws
IOException
{
if
(
value
!=
null
)
{
String
formattedValue
=
df
.
format
(
value
);
// 将 Double 转换为 BigDecimal,避免浮点数精度问题
BigDecimal
bd
=
BigDecimal
.
valueOf
(
value
).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
);
String
formattedValue
=
df
.
format
(
bd
.
doubleValue
());
gen
.
writeString
(
formattedValue
);
}
else
{
gen
.
writeNull
();
...
...
signal-optimize-service/src/main/java/net/wanji/opt/controller/signalopt/CrossIndexController.java
View file @
acb62a59
...
...
@@ -8,6 +8,7 @@ import net.wanji.common.framework.rest.JsonViewObject;
import
net.wanji.databus.bo.CrossIdBO
;
import
net.wanji.databus.po.CrossDataRealtimePO
;
import
net.wanji.databus.po.CrossDirDataRealtimePO
;
import
net.wanji.databus.po.CrossDirStatusDataPO
;
import
net.wanji.databus.po.TBaseCrossInfo
;
import
net.wanji.opt.dto.strategy.AddOrUpdateSceneDTO
;
import
net.wanji.opt.service.CrossIndexService
;
...
...
@@ -118,4 +119,20 @@ public class CrossIndexController {
return
JsonViewObject
.
newInstance
().
success
(
result
);
}
@ApiOperation
(
value
=
"查询各个方向交通状态变化趋势"
,
notes
=
"查询各个方向交通状态变化趋势"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@PostMapping
(
value
=
"/crossDirStatusData"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
AddOrUpdateSceneDTO
.
class
),
})
public
JsonViewObject
crossDirStatusData
(
@RequestBody
CrossIdBO
crossIdBO
)
{
CrossDirStatusDataPO
result
=
new
CrossDirStatusDataPO
();
try
{
result
=
crossIndexService
.
selectByCrossIdAndHour
(
crossIdBO
.
getCrossId
(),
2
);
}
catch
(
Exception
e
)
{
JsonViewObject
.
newInstance
().
fail
(
"查询各个方向交通状态变化趋势"
);
}
return
JsonViewObject
.
newInstance
().
success
(
result
);
}
}
signal-optimize-service/src/main/java/net/wanji/opt/service/CrossIndexService.java
View file @
acb62a59
...
...
@@ -3,6 +3,7 @@ package net.wanji.opt.service;
import
net.wanji.databus.bo.CrossIdBO
;
import
net.wanji.databus.po.CrossDataRealtimePO
;
import
net.wanji.databus.po.CrossDirDataRealtimePO
;
import
net.wanji.databus.po.CrossDirStatusDataPO
;
import
net.wanji.databus.po.TBaseCrossInfo
;
import
net.wanji.opt.vo.AIOptResultVO
;
import
net.wanji.opt.vo.CrossOptResult
;
...
...
@@ -27,4 +28,12 @@ public interface CrossIndexService {
List
<
AIOptResultVO
>
crossAIList
()
throws
Exception
;
crossStatusCountVO
crossStatusCount
(
String
crossId
);
/**
* @Description 查询据当前时间某小时的数据
* @Param crossId 路口编号
* @Param hour 小时数
* @return java.util.List<net.wanji.databus.po.CrossDirDataHistPO>
**/
CrossDirStatusDataPO
selectByCrossIdAndHour
(
String
crossId
,
int
hour
);
}
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/CrossIndexServiceImpl.java
View file @
acb62a59
package
net
.
wanji
.
opt
.
service
.
impl
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.utils.tool.
Dat
eUtil
;
import
net.wanji.common.utils.tool.
LocalDateTim
eUtil
;
import
net.wanji.databus.bo.CrossIdBO
;
import
net.wanji.databus.dao.mapper.BaseCrossInfoMapper
;
import
net.wanji.databus.dao.mapper.CrossDataRealtimeMapper
;
import
net.wanji.databus.dao.mapper.CrossDirDataHistMapper
;
import
net.wanji.databus.dao.mapper.CrossDirDataRealtimeMapper
;
import
net.wanji.databus.po.CrossDataRealtimePO
;
import
net.wanji.databus.po.CrossDirDataRealtimePO
;
import
net.wanji.databus.po.TBaseCrossInfo
;
import
net.wanji.databus.po.*
;
import
net.wanji.opt.common.enums.CrossOptStrategyEnum
;
import
net.wanji.opt.common.enums.OptStatusEnum
;
import
net.wanji.opt.common.enums.StrategyControlEnum
;
...
...
@@ -49,6 +49,8 @@ public class CrossIndexServiceImpl implements CrossIndexService {
private
StrategyCrossResultMapper
strategyCrossResultMapper
;
@Resource
private
HoloEventMapper
holoEventMapper
;
@Resource
private
CrossDirDataHistMapper
crossDirDataHistMapper
;
@Override
public
Map
<
Integer
,
CrossDirDataRealtimePO
>
crossDirIndex
(
CrossIdBO
crossIdBO
)
{
...
...
@@ -183,4 +185,29 @@ public class CrossIndexServiceImpl implements CrossIndexService {
}
return
crossStatusCountVO
;
}
@Override
public
CrossDirStatusDataPO
selectByCrossIdAndHour
(
String
crossId
,
int
hour
)
{
List
<
CrossDirDataHistPO
>
crossDirDataHistPOS
=
crossDirDataHistMapper
.
selectByCrossIdAndHour
(
crossId
,
hour
);
CrossDirStatusDataPO
crossDirStatusDataPO
=
new
CrossDirStatusDataPO
();
if
(
ObjectUtil
.
isNotEmpty
(
crossDirDataHistPOS
)){
//LocalDateTimeUtil.formatTimeStamp(Long.valueOf(x.getBatchTime())*1000, "HH:mm")
//根据dirType升序,分组
LinkedHashMap
<
Integer
,
List
<
CrossDirDataHistPO
>>
stringListMap
=
crossDirDataHistPOS
.
stream
().
sorted
(
Comparator
.
comparing
(
CrossDirDataHistPO:
:
getDirType
)).
collect
(
Collectors
.
groupingBy
(
x
->
x
.
getDirType
(),
LinkedHashMap:
:
new
,
Collectors
.
toList
()));
Set
<
Integer
>
stringSet
=
stringListMap
.
keySet
();
Map
<
Integer
,
List
<
Integer
>>
dirStatusListMap
=
new
HashMap
<>();
for
(
Integer
dir
:
stringSet
)
{
List
<
Integer
>
list
=
stringListMap
.
get
(
dir
).
stream
().
sorted
(
Comparator
.
comparing
(
CrossDirDataHistPO:
:
getBatchTime
)).
map
(
x
->
x
.
getStatus
()).
collect
(
Collectors
.
toList
());
dirStatusListMap
.
put
(
dir
,
list
);
}
//获取第一个方向
Integer
firstDir
=
stringSet
.
iterator
().
next
();
List
<
String
>
timeList
=
stringListMap
.
get
(
firstDir
).
stream
().
sorted
(
Comparator
.
comparing
(
CrossDirDataHistPO:
:
getBatchTime
)).
map
(
x
->
LocalDateTimeUtil
.
formatTimeStamp
(
Long
.
valueOf
(
x
.
getBatchTime
())
*
1000
,
"HH:mm"
)).
collect
(
Collectors
.
toList
());
crossDirStatusDataPO
.
setTimeList
(
timeList
);
crossDirStatusDataPO
.
setDirStatusListMap
(
dirStatusListMap
);
}
return
crossDirStatusDataPO
;
}
}
wj-databus/src/main/java/net/wanji/databus/config/DoubleToTwoDecimalPlacesSerializer.java
View file @
acb62a59
...
...
@@ -3,8 +3,10 @@ package net.wanji.databus.config;
import
com.fasterxml.jackson.core.JsonGenerator
;
import
com.fasterxml.jackson.databind.JsonSerializer
;
import
com.fasterxml.jackson.databind.SerializerProvider
;
import
net.wanji.common.utils.tool.JacksonUtils
;
import
java.io.IOException
;
import
java.math.BigDecimal
;
import
java.text.DecimalFormat
;
/**
...
...
@@ -17,7 +19,9 @@ public class DoubleToTwoDecimalPlacesSerializer extends JsonSerializer<Double> {
@Override
public
void
serialize
(
Double
value
,
JsonGenerator
gen
,
SerializerProvider
serializers
)
throws
IOException
{
if
(
value
!=
null
)
{
String
formattedValue
=
df
.
format
(
value
);
// 将 Double 转换为 BigDecimal,避免浮点数精度问题
BigDecimal
bd
=
BigDecimal
.
valueOf
(
value
).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
);
String
formattedValue
=
df
.
format
(
bd
.
doubleValue
());
gen
.
writeString
(
formattedValue
);
}
else
{
gen
.
writeNull
();
...
...
wj-databus/src/main/java/net/wanji/databus/dao/mapper/CrossDirDataHistMapper.java
View file @
acb62a59
...
...
@@ -76,4 +76,11 @@ public interface CrossDirDataHistMapper extends BaseMapper<CrossDirDataHistPO> {
List
<
CrossDirDataHistPO
>
selectByTimeSection
(
String
boStartDayStr
,
String
boEndDayStr
,
String
startHourMinuteStr
,
String
endHourMinuteStr
);
List
<
CrossDirDataHistPOExt
>
selectExtByTimeSection
(
String
boStartDayStr
,
String
boEndDayStr
,
String
startHourMinuteStr
,
String
endHourMinuteStr
);
/**
* @Description 查询据当前时间两小时的数据
* @Param [crossId, hour]
* @return java.util.List<net.wanji.databus.po.CrossDirDataHistPO>
**/
List
<
CrossDirDataHistPO
>
selectByCrossIdAndHour
(
@Param
(
"crossId"
)
String
crossId
,
@Param
(
"hour"
)
int
hour
);
}
wj-databus/src/main/java/net/wanji/databus/po/CrossDirStatusDataPO.java
0 → 100644
View file @
acb62a59
package
net
.
wanji
.
databus
.
po
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.List
;
import
java.util.Map
;
/**
* @ClassName CrossDirDataTimeListtPO
* @Description 路口分方向状态数据
* @Author zhouleilei
* @Date 2025/1/2 19:48
*/
@Data
public
class
CrossDirStatusDataPO
{
@ApiModelProperty
(
value
=
"时间列表"
,
example
=
""
)
private
List
<
String
>
timeList
;
@ApiModelProperty
(
value
=
"路口各方向的状态集合"
,
example
=
""
)
private
Map
<
Integer
,
List
<
Integer
>>
dirStatusListMap
;
}
wj-databus/src/main/resources/mapper/CrossDirDataHistMapper.xml
View file @
acb62a59
This diff is collapsed.
Click to expand it.
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