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
df137b3f
Commit
df137b3f
authored
May 19, 2023
by
hanbing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[add] 快速特勤,添加分组/修改分组
parent
05cef3a1
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
207 additions
and
46 deletions
+207
-46
SpecialServiceController.java
...va/net/wanji/web/controller/SpecialServiceController.java
+20
-0
SpecialServiceCrossMapper.java
.../java/net/wanji/web/mapper/SpecialServiceCrossMapper.java
+2
-0
SpecialServiceService.java
...ain/java/net/wanji/web/service/SpecialServiceService.java
+4
-0
SpecialServiceServiceImpl.java
...net/wanji/web/service/impl/SpecialServiceServiceImpl.java
+144
-46
GroupListVO.java
...ain/java/net/wanji/web/vo/specialService/GroupListVO.java
+31
-0
SpecialServiceCrossMapper.xml
...e/src/main/resources/mapper/SpecialServiceCrossMapper.xml
+6
-0
No files found.
signal-control-service/src/main/java/net/wanji/web/controller/SpecialServiceController.java
View file @
df137b3f
...
@@ -137,6 +137,26 @@ public class SpecialServiceController {
...
@@ -137,6 +137,26 @@ public class SpecialServiceController {
return
JsonViewObject
.
newInstance
().
success
(
outDirList
);
return
JsonViewObject
.
newInstance
().
success
(
outDirList
);
}
}
@AspectLog
(
description
=
"分组列表"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"分组列表"
,
notes
=
"分组列表"
,
response
=
GroupListVO
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@PostMapping
(
value
=
"/groupList"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
public
JsonViewObject
groupList
(
@RequestBody
SpecialServiceIdBO
specialServiceIdBO
)
{
GroupListVO
groupListVO
=
specialServiceService
.
groupList
(
specialServiceIdBO
);
return
JsonViewObject
.
newInstance
().
success
(
groupListVO
);
}
@AspectLog
(
description
=
"修改分组"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"修改分组"
,
notes
=
"修改分组"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@PostMapping
(
value
=
"/updateGroup"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
public
JsonViewObject
updateGroup
(
@RequestBody
GroupListVO
groupListVO
)
{
specialServiceService
.
updateGroup
(
groupListVO
);
return
JsonViewObject
.
newInstance
().
success
();
}
@AspectLog
(
description
=
"更新路口"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@AspectLog
(
description
=
"更新路口"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"更新路口"
,
notes
=
"更新路口"
,
response
=
JsonViewObject
.
class
,
@ApiOperation
(
value
=
"更新路口"
,
notes
=
"更新路口"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
...
...
signal-control-service/src/main/java/net/wanji/web/mapper/SpecialServiceCrossMapper.java
View file @
df137b3f
...
@@ -46,4 +46,6 @@ public interface SpecialServiceCrossMapper {
...
@@ -46,4 +46,6 @@ public interface SpecialServiceCrossMapper {
void
deleteCrossBySpecialServiceId
(
@Param
(
"id"
)
Integer
id
);
void
deleteCrossBySpecialServiceId
(
@Param
(
"id"
)
Integer
id
);
Integer
selectSpecialServiceIdByCrossId
(
String
crossId
);
Integer
selectSpecialServiceIdByCrossId
(
String
crossId
);
void
updateGroupName
(
String
crossId
,
String
groupName
);
}
}
signal-control-service/src/main/java/net/wanji/web/service/SpecialServiceService.java
View file @
df137b3f
...
@@ -40,4 +40,8 @@ public interface SpecialServiceService {
...
@@ -40,4 +40,8 @@ public interface SpecialServiceService {
List
<
String
>
getOutDirList
(
CrossIdVO
crossIdVO
);
List
<
String
>
getOutDirList
(
CrossIdVO
crossIdVO
);
void
batchLock
(
List
<
LockControlVO
>
lockControlVOList
);
void
batchLock
(
List
<
LockControlVO
>
lockControlVOList
);
GroupListVO
groupList
(
SpecialServiceIdBO
specialServiceIdBO
);
void
updateGroup
(
GroupListVO
groupListVO
);
}
}
signal-control-service/src/main/java/net/wanji/web/service/impl/SpecialServiceServiceImpl.java
View file @
df137b3f
...
@@ -33,6 +33,7 @@ import org.springframework.stereotype.Service;
...
@@ -33,6 +33,7 @@ import org.springframework.stereotype.Service;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.*
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
/**
* @author Kent HAN
* @author Kent HAN
...
@@ -663,6 +664,99 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
...
@@ -663,6 +664,99 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
specialServiceMapper
.
updateStatusDisable
(
specialServiceId
);
specialServiceMapper
.
updateStatusDisable
(
specialServiceId
);
}
}
@Override
public
GroupListVO
groupList
(
SpecialServiceIdBO
specialServiceIdBO
)
{
GroupListVO
groupListVO
=
new
GroupListVO
();
Integer
specialServiceId
=
specialServiceIdBO
.
getId
();
SpecialServicePO
specialServicePO
=
specialServiceMapper
.
selectById
(
specialServiceId
);
String
specialServiceName
=
specialServicePO
.
getName
();
groupListVO
.
setSpecialServiceName
(
specialServiceName
);
List
<
GroupListVO
.
GroupListElement
>
groupList
=
buildGroupList
(
specialServicePO
);
groupListVO
.
setGroupList
(
groupList
);
return
groupListVO
;
}
@Override
@Transactional
public
void
updateGroup
(
GroupListVO
groupListVO
)
{
List
<
GroupListVO
.
GroupListElement
>
groupList
=
groupListVO
.
getGroupList
();
for
(
GroupListVO
.
GroupListElement
groupListElement
:
groupList
)
{
String
groupName
=
groupListElement
.
getGroupName
();
if
(!
"未分组路口"
.
equals
(
groupName
)){
List
<
CrossListElement
>
crossList
=
groupListElement
.
getCrossList
();
for
(
CrossListElement
crossListElement
:
crossList
)
{
String
crossId
=
crossListElement
.
getCrossId
();
specialServiceCrossMapper
.
updateGroupName
(
crossId
,
groupName
);
}
}
}
}
private
List
<
GroupListVO
.
GroupListElement
>
buildGroupList
(
SpecialServicePO
specialServicePO
)
{
List
<
GroupListVO
.
GroupListElement
>
groupList
=
new
ArrayList
<>();
Integer
specialServiceId
=
specialServicePO
.
getId
();
List
<
SpecialServiceCrossPO
>
specialServiceCrossList
=
specialServiceCrossMapper
.
selectBySpecialServiceId
(
specialServiceId
);
Map
<
String
,
List
<
SpecialServiceCrossPO
>>
map
=
specialServiceCrossList
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
SpecialServiceCrossPO:
:
getGroupName
));
for
(
String
groupName
:
map
.
keySet
())
{
GroupListVO
.
GroupListElement
groupListElement
=
new
GroupListVO
.
GroupListElement
();
groupListElement
.
setGroupName
(
groupName
);
List
<
SpecialServiceCrossPO
>
groupCrossList
=
map
.
get
(
groupName
);
Collections
.
sort
(
groupCrossList
,
Comparator
.
comparing
(
SpecialServiceCrossPO:
:
getSort
));
StringBuilder
wktBuilder
=
new
StringBuilder
();
List
<
SpecialServiceDetailVO
.
CrossListElement
>
crossList
=
new
ArrayList
<>();
buildWktAndCrosslist
(
wktBuilder
,
crossList
,
groupCrossList
,
groupName
);
groupListElement
.
setWkt
(
wktBuilder
.
toString
());
groupListElement
.
setCrossList
(
crossList
);
groupList
.
add
(
groupListElement
);
}
return
groupList
;
}
private
void
buildWktAndCrosslist
(
StringBuilder
wktBuilder
,
List
<
CrossListElement
>
crossList
,
List
<
SpecialServiceCrossPO
>
groupCrossList
,
String
groupName
)
{
for
(
int
i
=
0
;
i
<
groupCrossList
.
size
();
i
++)
{
SpecialServiceCrossPO
currentCrossElement
=
groupCrossList
.
get
(
i
);
// 构造wkt
if
(!
"未分组路口"
.
equals
(
groupName
)
&&
i
!=
groupCrossList
.
size
()
-
1
)
{
// 有分组且不是组内最后一个路口
SpecialServiceCrossPO
nextCrossElement
=
groupCrossList
.
get
(
i
+
1
);
String
nextCrossId
=
nextCrossElement
.
getCrossId
();
String
currentCrossId
=
currentCrossElement
.
getCrossId
();
RidInfoEntity
ridInfoEntity
=
ridInfoMapper
.
selectByStartEnd
(
currentCrossId
,
nextCrossId
);
String
wktElement
=
ridInfoEntity
.
getWkt
();
wktBuilder
.
append
(
wktElement
).
append
(
";"
);
}
// 构造crossList
String
currentCrossId
=
currentCrossElement
.
getCrossId
();
BaseCrossInfoPO
currentCross
=
baseCrossInfoMapper
.
selectById
(
currentCrossId
);
CrossListElement
crossListElement
=
new
CrossListElement
();
crossListElement
.
setCrossName
(
currentCross
.
getName
());
crossListElement
.
setCrossId
(
currentCrossId
);
setElementStartEnd
(
groupCrossList
,
i
,
currentCrossId
,
crossListElement
);
crossListElement
.
setStatus
(
currentCrossElement
.
getStatus
());
crossListElement
.
setSort
(
currentCrossElement
.
getSort
());
crossList
.
add
(
crossListElement
);
}
// 去wkt掉最后一个分号
if
(
wktBuilder
.
length
()
>
0
)
{
wktBuilder
.
setLength
(
wktBuilder
.
length
()
-
1
);
}
}
private
List
<
SpecialServiceDetailVO
.
CrossListElement
>
buildCrossList
(
Integer
specialServiceId
)
{
private
List
<
SpecialServiceDetailVO
.
CrossListElement
>
buildCrossList
(
Integer
specialServiceId
)
{
List
<
SpecialServiceDetailVO
.
CrossListElement
>
crossList
=
new
ArrayList
<>();
List
<
SpecialServiceDetailVO
.
CrossListElement
>
crossList
=
new
ArrayList
<>();
List
<
SpecialServiceCrossPO
>
specialServiceCrossList
=
List
<
SpecialServiceCrossPO
>
specialServiceCrossList
=
...
@@ -678,52 +772,7 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
...
@@ -678,52 +772,7 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
crossListElement
.
setCrossName
(
baseCrossInfoPO
.
getName
());
crossListElement
.
setCrossName
(
baseCrossInfoPO
.
getName
());
crossListElement
.
setCrossId
(
crossId
);
crossListElement
.
setCrossId
(
crossId
);
if
(
i
==
0
)
{
// 开始路口
setElementStartEnd
(
specialServiceCrossList
,
i
,
currentCrossId
,
crossListElement
);
crossListElement
.
setRouteStart
(
""
);
SpecialServiceCrossPO
nextCross
=
specialServiceCrossList
.
get
(
i
+
1
);
String
nextCrossId
=
nextCross
.
getCrossId
();
// 构建路名+方向
RidInfoEntity
ridInfoEntity
=
ridInfoMapper
.
selectByStartEnd
(
currentCrossId
,
nextCrossId
);
String
name
=
ridInfoEntity
.
getName
();
// 西湖路:湘江中路@书院路路段
String
[]
split
=
name
.
split
(
":"
);
String
streetName
=
split
[
0
];
Integer
outDir
=
ridInfoEntity
.
getOutDir
();
String
ourDirMsg
=
CrossDirEnum
.
getMsgByCode
(
outDir
);
crossListElement
.
setRouteEnd
(
streetName
+
ourDirMsg
);
}
else
if
(
i
==
specialServiceCrossList
.
size
()
-
1
)
{
// 结束路口
crossListElement
.
setRouteEnd
(
""
);
SpecialServiceCrossPO
preCross
=
specialServiceCrossList
.
get
(
i
-
1
);
String
preCrossId
=
preCross
.
getCrossId
();
// 构建路名+方向
RidInfoEntity
ridInfoEntity
=
ridInfoMapper
.
selectByStartEnd
(
preCrossId
,
currentCrossId
);
String
name
=
ridInfoEntity
.
getName
();
// 西湖路:湘江中路@书院路路段
String
[]
split
=
name
.
split
(
":"
);
String
streetName
=
split
[
0
];
Integer
inDir
=
ridInfoEntity
.
getInDir
();
String
inDirMsg
=
CrossDirEnum
.
getMsgByCode
(
inDir
);
crossListElement
.
setRouteStart
(
streetName
+
inDirMsg
);
}
else
{
// 中间路口
SpecialServiceCrossPO
preCross
=
specialServiceCrossList
.
get
(
i
-
1
);
SpecialServiceCrossPO
nextCross
=
specialServiceCrossList
.
get
(
i
+
1
);
String
preCrossId
=
preCross
.
getCrossId
();
String
nextCrossId
=
nextCross
.
getCrossId
();
// 路线起点
RidInfoEntity
ridInfoEntity
=
ridInfoMapper
.
selectByStartEnd
(
preCrossId
,
currentCrossId
);
String
name
=
ridInfoEntity
.
getName
();
// 西湖路:湘江中路@书院路路段
String
[]
split
=
name
.
split
(
":"
);
String
streetName
=
split
[
0
];
Integer
inDir
=
ridInfoEntity
.
getInDir
();
String
inDirMsg
=
CrossDirEnum
.
getMsgByCode
(
inDir
);
crossListElement
.
setRouteStart
(
streetName
+
inDirMsg
);
// 路线终点
RidInfoEntity
ridInfoEntity2
=
ridInfoMapper
.
selectByStartEnd
(
currentCrossId
,
nextCrossId
);
String
name2
=
ridInfoEntity2
.
getName
();
// 西湖路:湘江中路@书院路路段
String
[]
split2
=
name2
.
split
(
":"
);
String
streetName2
=
split2
[
0
];
Integer
outDir
=
ridInfoEntity2
.
getOutDir
();
String
ourDirMsg
=
CrossDirEnum
.
getMsgByCode
(
outDir
);
crossListElement
.
setRouteEnd
(
streetName2
+
ourDirMsg
);
}
crossListElement
.
setStatus
(
currentCross
.
getStatus
());
crossListElement
.
setStatus
(
currentCross
.
getStatus
());
crossListElement
.
setSort
(
currentCross
.
getSort
());
crossListElement
.
setSort
(
currentCross
.
getSort
());
...
@@ -734,6 +783,55 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
...
@@ -734,6 +783,55 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
return
crossList
;
return
crossList
;
}
}
private
void
setElementStartEnd
(
List
<
SpecialServiceCrossPO
>
specialServiceCrossList
,
int
i
,
String
currentCrossId
,
CrossListElement
crossListElement
)
{
if
(
i
==
0
)
{
// 开始路口
crossListElement
.
setRouteStart
(
""
);
SpecialServiceCrossPO
nextCross
=
specialServiceCrossList
.
get
(
i
+
1
);
String
nextCrossId
=
nextCross
.
getCrossId
();
// 构建路名+方向
RidInfoEntity
ridInfoEntity
=
ridInfoMapper
.
selectByStartEnd
(
currentCrossId
,
nextCrossId
);
String
name
=
ridInfoEntity
.
getName
();
// 西湖路:湘江中路@书院路路段
String
[]
split
=
name
.
split
(
":"
);
String
streetName
=
split
[
0
];
Integer
outDir
=
ridInfoEntity
.
getOutDir
();
String
ourDirMsg
=
CrossDirEnum
.
getMsgByCode
(
outDir
);
crossListElement
.
setRouteEnd
(
streetName
+
ourDirMsg
);
}
else
if
(
i
==
specialServiceCrossList
.
size
()
-
1
)
{
// 结束路口
crossListElement
.
setRouteEnd
(
""
);
SpecialServiceCrossPO
preCross
=
specialServiceCrossList
.
get
(
i
-
1
);
String
preCrossId
=
preCross
.
getCrossId
();
// 构建路名+方向
RidInfoEntity
ridInfoEntity
=
ridInfoMapper
.
selectByStartEnd
(
preCrossId
,
currentCrossId
);
String
name
=
ridInfoEntity
.
getName
();
// 西湖路:湘江中路@书院路路段
String
[]
split
=
name
.
split
(
":"
);
String
streetName
=
split
[
0
];
Integer
inDir
=
ridInfoEntity
.
getInDir
();
String
inDirMsg
=
CrossDirEnum
.
getMsgByCode
(
inDir
);
crossListElement
.
setRouteStart
(
streetName
+
inDirMsg
);
}
else
{
// 中间路口
SpecialServiceCrossPO
preCross
=
specialServiceCrossList
.
get
(
i
-
1
);
SpecialServiceCrossPO
nextCross
=
specialServiceCrossList
.
get
(
i
+
1
);
String
preCrossId
=
preCross
.
getCrossId
();
String
nextCrossId
=
nextCross
.
getCrossId
();
// 路线起点
RidInfoEntity
ridInfoEntity
=
ridInfoMapper
.
selectByStartEnd
(
preCrossId
,
currentCrossId
);
String
name
=
ridInfoEntity
.
getName
();
// 西湖路:湘江中路@书院路路段
String
[]
split
=
name
.
split
(
":"
);
String
streetName
=
split
[
0
];
Integer
inDir
=
ridInfoEntity
.
getInDir
();
String
inDirMsg
=
CrossDirEnum
.
getMsgByCode
(
inDir
);
crossListElement
.
setRouteStart
(
streetName
+
inDirMsg
);
// 路线终点
RidInfoEntity
ridInfoEntity2
=
ridInfoMapper
.
selectByStartEnd
(
currentCrossId
,
nextCrossId
);
String
name2
=
ridInfoEntity2
.
getName
();
// 西湖路:湘江中路@书院路路段
String
[]
split2
=
name2
.
split
(
":"
);
String
streetName2
=
split2
[
0
];
Integer
outDir
=
ridInfoEntity2
.
getOutDir
();
String
ourDirMsg
=
CrossDirEnum
.
getMsgByCode
(
outDir
);
crossListElement
.
setRouteEnd
(
streetName2
+
ourDirMsg
);
}
}
@NotNull
@NotNull
private
List
<
BaseCrossInfoPO
>
getRouteList
(
BaseCrossInfoPO
startCross
,
BaseCrossInfoPO
endCross
)
{
private
List
<
BaseCrossInfoPO
>
getRouteList
(
BaseCrossInfoPO
startCross
,
BaseCrossInfoPO
endCross
)
{
String
endCrossLonLatStr
=
getCrossLonLatStr
(
endCross
);
String
endCrossLonLatStr
=
getCrossLonLatStr
(
endCross
);
...
...
signal-control-service/src/main/java/net/wanji/web/vo/specialService/GroupListVO.java
0 → 100644
View file @
df137b3f
package
net
.
wanji
.
web
.
vo
.
specialService
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
/**
* @author Kent HAN
* @date 2022/11/9 17:21
*/
@NoArgsConstructor
@Data
@ApiModel
(
value
=
"GroupListVO"
)
public
class
GroupListVO
{
@ApiModelProperty
(
value
=
"特勤名称"
,
notes
=
""
)
private
String
specialServiceName
;
private
List
<
GroupListElement
>
groupList
;
@NoArgsConstructor
@Data
public
static
class
GroupListElement
{
@ApiModelProperty
(
value
=
"分组名称"
,
notes
=
""
)
private
String
groupName
;
@ApiModelProperty
(
value
=
"wkt"
,
notes
=
""
)
private
String
wkt
;
private
List
<
SpecialServiceDetailVO
.
CrossListElement
>
crossList
;
}
}
signal-control-service/src/main/resources/mapper/SpecialServiceCrossMapper.xml
View file @
df137b3f
...
@@ -56,6 +56,12 @@
...
@@ -56,6 +56,12 @@
where special_service_id = #{specialServiceId} and cross_id = #{endCrossid}
where special_service_id = #{specialServiceId} and cross_id = #{endCrossid}
</update>
</update>
<update
id=
"updateGroupName"
>
update t_special_service_cross
set group_name = #{groupName}
where cross_id = #{crossId}
</update>
<delete
id=
"deleteCross"
>
<delete
id=
"deleteCross"
>
delete from t_special_service_cross
delete from t_special_service_cross
where special_service_id = #{specialServiceId} and cross_id = #{crossId}
where special_service_id = #{specialServiceId} and cross_id = #{crossId}
...
...
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