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
c16350de
Commit
c16350de
authored
Mar 16, 2025
by
Zheng Yi Fan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
监测详情-路口事件-路口状态分布趋势接口
parent
b77b94b0
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
270 additions
and
0 deletions
+270
-0
CrossController.java
...main/java/net/wanji/opt/controllerv2/CrossController.java
+56
-0
CrossMapper.java
...e/src/main/java/net/wanji/opt/dao/mapper/CrossMapper.java
+24
-0
CrossService.java
...e/src/main/java/net/wanji/opt/servicev2/CrossService.java
+26
-0
CrossServiceImpl.java
...java/net/wanji/opt/servicev2/implv2/CrossServiceImpl.java
+70
-0
CrossStatusDisOptTimeEntity.java
...wanji/opt/synthesis/pojo/CrossStatusDisOptTimeEntity.java
+14
-0
CrossStatusDistributionVO.java
...ain/java/net/wanji/opt/vo2/CrossStatusDistributionVO.java
+24
-0
CrossMapper.xml
...ptimize-service/src/main/resources/mapper/CrossMapper.xml
+56
-0
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/CrossController.java
0 → 100644
View file @
c16350de
package
net
.
wanji
.
opt
.
controllerv2
;
import
io.swagger.annotations.*
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.opt.servicev2.CrossService
;
import
net.wanji.opt.synthesis.pojo.CrossStatusDisOptTimeEntity
;
import
net.wanji.opt.vo2.CrossStatusDistributionVO
;
import
org.springframework.http.HttpMethod
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author zhengyifan
* @date 2025/3/15
*/
@Api
(
value
=
"CrossController"
,
description
=
"监测详情-路口事件详情-路口状态分布"
)
@RequestMapping
(
value
=
"/cross"
)
@RestController
@Slf4j
public
class
CrossController
{
@Resource
private
CrossService
crossService
;
@ApiOperation
(
value
=
"路口状态分布"
,
notes
=
"路口状态分布"
,
response
=
JsonViewObject
.
class
,
httpMethod
=
"GET"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"crossID"
,
value
=
"路口ID"
,
required
=
true
,
dataType
=
"String"
,
paramType
=
"query"
),
@ApiImplicitParam
(
name
=
"groupType"
,
value
=
"时间粒度 0--5分钟 1--15分钟 2--30分钟 3--60分钟"
,
required
=
true
,
dataType
=
"String"
,
paramType
=
"query"
),
@ApiImplicitParam
(
name
=
"date"
,
value
=
"日期 格式:yyyy-MM-dd"
,
required
=
true
,
dataType
=
"String"
,
paramType
=
"query"
),
@ApiImplicitParam
(
name
=
"objectType"
,
value
=
"范围 1:方向级指标 2:转向级指标 3:车道级指标 4:路口级指标"
,
required
=
true
,
dataType
=
"String"
,
paramType
=
"query"
),
@ApiImplicitParam
(
name
=
"directionName"
,
value
=
"方向"
,
required
=
false
,
dataType
=
"String"
,
defaultValue
=
"北进口"
),
})
@GetMapping
(
value
=
"/getCrossStatusDistribution"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
CrossStatusDistributionVO
.
class
),
})
public
JsonViewObject
getCrossStatusDistribution
(
String
crossID
,
String
date
,
String
groupType
,
Integer
objectType
,
@RequestParam
(
defaultValue
=
""
)
String
directionName
,
HttpMethod
httpMethod
)
{
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
Map
<
String
,
List
<?>>
result
;
try
{
result
=
crossService
.
getCrossStatusDistribution
(
crossID
,
date
,
groupType
,
objectType
,
directionName
);
}
catch
(
Exception
e
)
{
log
.
error
(
"监测详情-路口事件详情-路口状态分布: "
,
e
);
return
jsonViewObject
.
fail
(
"路口状态分布查询失败"
);
}
return
jsonViewObject
.
success
(
result
);
}
}
signal-optimize-service/src/main/java/net/wanji/opt/dao/mapper/CrossMapper.java
0 → 100644
View file @
c16350de
package
net
.
wanji
.
opt
.
dao
.
mapper
;
import
net.wanji.databus.po.CrossDataHistPO
;
import
net.wanji.opt.synthesis.pojo.CrossStatusDisOptTimeEntity
;
import
net.wanji.opt.synthesis.pojo.StrategyCrossResultEntity
;
import
java.util.List
;
import
java.util.Map
;
/**
* <p>
* 监测详情-路口事件详情
* </p>
* @author zhengyifan
* @date 2025/3/15
*/
public
interface
CrossMapper
{
/**
* 监测详情-路口事件详情-路口状态分布趋势-优化时间
* @param crossID 路口ID
* @return
*/
List
<
CrossStatusDisOptTimeEntity
>
getOptTimes
(
String
crossID
);
}
signal-optimize-service/src/main/java/net/wanji/opt/servicev2/CrossService.java
0 → 100644
View file @
c16350de
package
net
.
wanji
.
opt
.
servicev2
;
import
net.wanji.opt.vo2.CrossStatusDistributionVO
;
import
java.util.List
;
import
java.util.Map
;
/**
* <p>
* 监测详情-路口事件详情
* </p>
* @author zhengyifan
* @date 2025/3/15
*/
public
interface
CrossService
{
/**
* 获取路口状态分布
* @param crossID 路口ID
* @param date 日期
* @param groupType 时间粒度 参数要求:0--5分钟 1--15分钟 2--30分钟 3--60分钟
* @param objectType 范围 参数要求:1--方向级 2--转向级 3--车道级 4--路口级
* @param directionName 方向
* @return 包含状态分布信息列表与优化时间列表
*/
Map
<
String
,
List
<?>>
getCrossStatusDistribution
(
String
crossID
,
String
date
,
String
groupType
,
Integer
objectType
,
String
directionName
);
}
signal-optimize-service/src/main/java/net/wanji/opt/servicev2/implv2/CrossServiceImpl.java
0 → 100644
View file @
c16350de
package
net
.
wanji
.
opt
.
servicev2
.
implv2
;
import
com.google.gson.JsonElement
;
import
com.google.gson.JsonObject
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.enums.BaseEnum
;
import
net.wanji.common.utils.tool.StringUtils
;
import
net.wanji.opt.dao.mapper.CrossMapper
;
import
net.wanji.opt.dao.mapper.GreenwaveHistoryMapper
;
import
net.wanji.opt.po.base.CrossLaneDataHistPoExtend
;
import
net.wanji.opt.servicev2.CrossService
;
import
net.wanji.opt.synthesis.pojo.CrossStatusDisOptTimeEntity
;
import
net.wanji.opt.synthesis.pojo.StrategyCrossResultEntity
;
import
net.wanji.opt.vo2.CrossStatusDistributionVO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
javax.annotation.Resource
;
import
java.util.*
;
/**
* <p>
* 监测详情-路口事件详情-路口状态分布实现类
* </p>
* @author zhengyifan
* @date 2025/3/15
*/
@Service
@Slf4j
public
class
CrossServiceImpl
implements
CrossService
{
@Resource
private
CrossMapper
crossMapper
;
@Resource
private
GreenwaveHistoryMapper
greenwaveHistoryMapper
;
@Override
public
Map
<
String
,
List
<?>>
getCrossStatusDistribution
(
String
crossID
,
String
date
,
String
groupType
,
Integer
objectType
,
String
directionName
)
{
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
params
.
put
(
"crossId"
,
crossID
);
params
.
put
(
"startDate"
,
date
+
" 00:00:00"
);
params
.
put
(
"endDate"
,
date
+
" 23:59:59"
);
params
.
put
(
"groupType"
,
groupType
);
params
.
put
(
"objectType"
,
objectType
);
if
(
StringUtils
.
isNotBlank
(
directionName
))
{
params
.
put
(
"dir"
,
BaseEnum
.
SignalDirectionEnum
.
getCodeByName
(
directionName
.
substring
(
0
,
directionName
.
indexOf
(
"进口"
))));
}
List
<
CrossLaneDataHistPoExtend
>
firstList
=
greenwaveHistoryMapper
.
findCrossObjectIndex
(
params
);
List
<
CrossStatusDisOptTimeEntity
>
optTimeList
=
crossMapper
.
getOptTimes
(
crossID
);
List
<
CrossStatusDistributionVO
>
infoList
=
new
ArrayList
<>();
for
(
CrossLaneDataHistPoExtend
c
:
firstList
)
{
CrossStatusDistributionVO
info
=
new
CrossStatusDistributionVO
();
info
.
setSpeed
(
c
.
getSpeed
());
info
.
setQueueLength
(
c
.
getAvgQueueLength
());
info
.
setDelayTime
(
c
.
getDelayTime
());
info
.
setStopTimes
(
c
.
getStopTimes
());
info
.
setStartTime
(
c
.
getStartTime
().
toString
().
substring
(
11
,
16
));
infoList
.
add
(
info
);
}
Map
<
String
,
List
<?>>
result
=
new
HashMap
<>();
result
.
put
(
"infoList"
,
infoList
);
result
.
put
(
"optTimeList"
,
optTimeList
);
return
result
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/synthesis/pojo/CrossStatusDisOptTimeEntity.java
0 → 100644
View file @
c16350de
package
net
.
wanji
.
opt
.
synthesis
.
pojo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* 监测详情-路口事件详情-路口状态分布趋势-优化时间
*/
@Data
public
class
CrossStatusDisOptTimeEntity
{
private
String
startTime
;
private
String
endTime
;
}
signal-optimize-service/src/main/java/net/wanji/opt/vo2/CrossStatusDistributionVO.java
0 → 100644
View file @
c16350de
package
net
.
wanji
.
opt
.
vo2
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
net.wanji.opt.synthesis.pojo.CrossStatusDisOptTimeEntity
;
import
java.util.Date
;
import
java.util.List
;
@Data
@ApiModel
(
value
=
"CrossStatusDistributionVO"
,
description
=
"监测详情-路口事件详情-路口状态分布"
)
public
class
CrossStatusDistributionVO
{
@ApiModelProperty
(
value
=
"平均速度"
)
private
Double
speed
;
@ApiModelProperty
(
value
=
"排队长度"
)
private
Integer
queueLength
;
@ApiModelProperty
(
value
=
"平均延误"
)
private
Integer
delayTime
;
@ApiModelProperty
(
value
=
"平均停车次数"
)
private
Double
stopTimes
;
@ApiModelProperty
(
value
=
"时间"
)
private
String
startTime
;
}
signal-optimize-service/src/main/resources/mapper/CrossMapper.xml
0 → 100644
View file @
c16350de
<?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.CrossMapper"
>
<resultMap
id=
"BaseResultMap"
type=
"net.wanji.opt.synthesis.pojo.CrossStatusDisOptTimeEntity"
>
<result
property=
"startTime"
column=
"startTime"
></result>
<result
property=
"endTime"
column=
"endTime"
></result>
</resultMap>
<select
id=
"getOptTimes"
resultMap=
"BaseResultMap"
parameterType=
"String"
>
select distinct DATE_FORMAT(issue_time, '%H:%i') as startTime,
DATE_FORMAT(newtime, '%H:%i') as endTime
from
(
select
a.issue_time,
DATE_ADD(a.issue_time, interval a.count_down second) newTime
from
t_strategy_cross_result a
where
1 = 1
and a.cross_id = #{crossID}
and sign(a.rtn_type) = -1
and a.current_algo = 1
and a.issue_time >= CURDATE()
union
select
a.issue_time,
DATE_ADD(a.issue_time, interval a.duration second) newTime
from
t_strategy_cross_result a
where
1 = 1
and a.cross_id = #{crossID}
and a.current_algo = 2
and a.response_code = 200
and a.issue_time >= CURDATE()
union
select
a.issue_time,
DATE_ADD(a.issue_time , interval a.duration second) newTime
from
t_strategy_cross_result a
where
1 = 1
and a.cross_id = #{crossID}
and a.current_algo = 3
and a.response_code = 200
and a.issue_time >= CURDATE()
) b
order by b.issue_time
</select>
</mapper>
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