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
760d8b20
Commit
760d8b20
authored
May 18, 2023
by
hanbing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[add] 快速特勤,特勤详情
parent
f18a7fc6
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
375 additions
and
96 deletions
+375
-96
AddSpecialServiceBO.java
...e/src/main/java/net/wanji/web/bo/AddSpecialServiceBO.java
+3
-1
SpecialServiceIdBO.java
...ce/src/main/java/net/wanji/web/bo/SpecialServiceIdBO.java
+3
-3
SpecialServiceController.java
...va/net/wanji/web/controller/SpecialServiceController.java
+19
-8
SpecialServiceMapper.java
.../main/java/net/wanji/web/mapper/SpecialServiceMapper.java
+4
-0
SpecialServiceService.java
...ain/java/net/wanji/web/service/SpecialServiceService.java
+5
-2
SpecialServiceServiceImpl.java
...net/wanji/web/service/impl/SpecialServiceServiceImpl.java
+259
-78
RouteElementVO.java
.../java/net/wanji/web/vo/specialService/RouteElementVO.java
+5
-1
SpecialServiceDetailVO.java
...t/wanji/web/vo/specialService/SpecialServiceDetailVO.java
+39
-0
SpecialServiceCrossMapper.xml
...e/src/main/resources/mapper/SpecialServiceCrossMapper.xml
+1
-3
SpecialServiceMapper.xml
...ervice/src/main/resources/mapper/SpecialServiceMapper.xml
+37
-0
No files found.
signal-control-service/src/main/java/net/wanji/web/bo/AddSpecialServiceBO.java
View file @
760d8b20
...
...
@@ -3,7 +3,7 @@ package net.wanji.web.bo;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
net.wanji.web.vo.RouteElementVO
;
import
net.wanji.web.vo.
specialService.
RouteElementVO
;
import
javax.validation.constraints.Pattern
;
import
java.util.List
;
...
...
@@ -15,6 +15,8 @@ import java.util.List;
@Data
@ApiModel
(
value
=
"AddSpecialServiceBO"
,
description
=
"快速特勤-添加特勤输入参数"
)
public
class
AddSpecialServiceBO
{
@ApiModelProperty
(
value
=
"特勤ID"
)
Integer
id
;
@ApiModelProperty
(
value
=
"特勤名称"
)
@Pattern
(
regexp
=
"^[\\u4E00-\\u9FA5\\w\\-]{0,16}$"
,
message
=
"只能包含中文、英文、数字、下划线和中横线,0~16个字符"
)
String
name
;
...
...
signal-control-service/src/main/java/net/wanji/web/
vo/specialService/DeleteSpecialService
BO.java
→
signal-control-service/src/main/java/net/wanji/web/
bo/SpecialServiceId
BO.java
View file @
760d8b20
package
net
.
wanji
.
web
.
vo
.
specialService
;
package
net
.
wanji
.
web
.
bo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
...
...
@@ -9,8 +9,8 @@ import lombok.Data;
* @date 2022/11/8 13:18
*/
@Data
@ApiModel
(
value
=
"
DeleteSpecialService
BO"
,
description
=
"快速特勤-删除特勤输入参数"
)
public
class
DeleteSpecialService
BO
{
@ApiModel
(
value
=
"
SpecialServiceId
BO"
,
description
=
"快速特勤-删除特勤输入参数"
)
public
class
SpecialServiceId
BO
{
@ApiModelProperty
(
value
=
"特勤ID"
)
Integer
id
;
}
signal-control-service/src/main/java/net/wanji/web/controller/SpecialServiceController.java
View file @
760d8b20
...
...
@@ -9,9 +9,10 @@ import net.wanji.common.enums.BaseEnum;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.web.bo.AddSpecialServiceBO
;
import
net.wanji.web.bo.IsValidPointBO
;
import
net.wanji.web.bo.SpecialServiceIdBO
;
import
net.wanji.web.bo.SpecialServiceRouteBO
;
import
net.wanji.web.service.SpecialServiceService
;
import
net.wanji.web.vo.RouteElementVO
;
import
net.wanji.web.vo.
specialService.
RouteElementVO
;
import
net.wanji.web.vo.specialService.*
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
...
...
@@ -54,13 +55,13 @@ public class SpecialServiceController {
return
JsonViewObject
.
newInstance
().
success
(
res
);
}
@AspectLog
(
description
=
"添加特勤"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
QUERY
)
@ApiOperation
(
value
=
"添加
特勤"
,
notes
=
"添加
特勤"
,
response
=
JsonViewObject
.
class
,
@AspectLog
(
description
=
"添加
/编辑
特勤"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
QUERY
)
@ApiOperation
(
value
=
"添加
/编辑特勤"
,
notes
=
"添加/编辑
特勤"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@PostMapping
(
value
=
"/addSpecialService"
,
@PostMapping
(
value
=
"/add
OrUpdate
SpecialService"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
public
JsonViewObject
addSpecialService
(
@RequestBody
@Valid
AddSpecialServiceBO
addSpecialServiceBO
)
{
specialServiceService
.
addSpecialService
(
addSpecialServiceBO
);
public
JsonViewObject
add
OrUpdate
SpecialService
(
@RequestBody
@Valid
AddSpecialServiceBO
addSpecialServiceBO
)
{
specialServiceService
.
add
OrUpdate
SpecialService
(
addSpecialServiceBO
);
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
return
jsonViewObject
.
success
();
...
...
@@ -84,12 +85,22 @@ public class SpecialServiceController {
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@PostMapping
(
value
=
"/deleteSpecialService"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
public
JsonViewObject
deleteSpecialService
(
@RequestBody
DeleteSpecialServiceBO
deleteSpecialService
BO
)
{
Integer
id
=
deleteSpecialService
BO
.
getId
();
public
JsonViewObject
deleteSpecialService
(
@RequestBody
SpecialServiceIdBO
specialServiceId
BO
)
{
Integer
id
=
specialServiceId
BO
.
getId
();
specialServiceService
.
deleteSpecialService
(
id
);
return
JsonViewObject
.
newInstance
().
success
();
}
@AspectLog
(
description
=
"特勤详情"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"特勤详情"
,
notes
=
"特勤详情"
,
response
=
SpecialServiceDetailVO
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@PostMapping
(
value
=
"/specialServiceDetail"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
public
JsonViewObject
specialServiceDetail
(
@RequestBody
SpecialServiceIdBO
specialServiceIdBO
)
{
SpecialServiceDetailVO
specialServiceDetailVO
=
specialServiceService
.
specialServiceDetail
(
specialServiceIdBO
);
return
JsonViewObject
.
newInstance
().
success
(
specialServiceDetailVO
);
}
@AspectLog
(
description
=
"编辑特勤"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"编辑特勤"
,
notes
=
"编辑特勤"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
...
...
signal-control-service/src/main/java/net/wanji/web/mapper/SpecialServiceMapper.java
View file @
760d8b20
...
...
@@ -31,4 +31,8 @@ public interface SpecialServiceMapper {
void
updateStatusDisable
(
@Param
(
"specialServiceId"
)
Integer
specialServiceId
);
List
<
SpecialServicePO
>
selectAll
();
SpecialServicePO
selectById
(
Integer
specialServiceId
);
void
updateOne
(
Integer
specialServiceId
,
SpecialServicePO
specialServicePO
);
}
signal-control-service/src/main/java/net/wanji/web/service/SpecialServiceService.java
View file @
760d8b20
...
...
@@ -2,8 +2,9 @@ package net.wanji.web.service;
import
net.wanji.web.bo.AddSpecialServiceBO
;
import
net.wanji.web.bo.IsValidPointBO
;
import
net.wanji.web.bo.SpecialServiceIdBO
;
import
net.wanji.web.bo.SpecialServiceRouteBO
;
import
net.wanji.web.vo.RouteElementVO
;
import
net.wanji.web.vo.
specialService.
RouteElementVO
;
import
net.wanji.web.vo.specialService.*
;
import
java.util.List
;
...
...
@@ -14,7 +15,7 @@ import java.util.Set;
* @date 2022/11/8 11:06
*/
public
interface
SpecialServiceService
{
void
addSpecialService
(
AddSpecialServiceBO
addSpecialServiceBO
);
void
add
OrUpdate
SpecialService
(
AddSpecialServiceBO
addSpecialServiceBO
);
List
<
ListSpecialServicesVO
>
listSpecialServices
();
...
...
@@ -31,4 +32,6 @@ public interface SpecialServiceService {
List
<
List
<
RouteElementVO
>>
specialServiceRoute
(
SpecialServiceRouteBO
specialServiceRouteBO
);
void
isValidPoint
(
IsValidPointBO
isValidPointBO
);
SpecialServiceDetailVO
specialServiceDetail
(
SpecialServiceIdBO
specialServiceIdBO
);
}
signal-control-service/src/main/java/net/wanji/web/service/impl/SpecialServiceServiceImpl.java
View file @
760d8b20
...
...
@@ -15,6 +15,7 @@ import net.wanji.databus.dao.mapper.RidInfoMapper;
import
net.wanji.databus.po.BaseCrossInfoPO
;
import
net.wanji.web.bo.AddSpecialServiceBO
;
import
net.wanji.web.bo.IsValidPointBO
;
import
net.wanji.web.bo.SpecialServiceIdBO
;
import
net.wanji.web.bo.SpecialServiceRouteBO
;
import
net.wanji.web.common.enums.CrossDirEnum
;
import
net.wanji.web.mapper.*
;
...
...
@@ -22,11 +23,8 @@ import net.wanji.web.po.CrossDirTurnPO;
import
net.wanji.web.po.SpecialServiceCrossPO
;
import
net.wanji.web.po.SpecialServicePO
;
import
net.wanji.web.service.SpecialServiceService
;
import
net.wanji.web.vo.RouteElementVO
;
import
net.wanji.web.vo.specialService.DeleteCrossInVO
;
import
net.wanji.web.vo.specialService.ListSpecialServicesVO
;
import
net.wanji.web.vo.specialService.UpdateCrossInVO
;
import
net.wanji.web.vo.specialService.UpdateSpecialServiceInVO
;
import
net.wanji.web.vo.specialService.RouteElementVO
;
import
net.wanji.web.vo.specialService.*
;
import
org.jetbrains.annotations.NotNull
;
import
org.locationtech.jts.geom.Geometry
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -66,41 +64,163 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
@Override
@Transactional
public
void
addSpecialService
(
AddSpecialServiceBO
addSpecialServiceBO
)
{
// 插入特勤表
SpecialServicePO
specialServicePO
=
new
SpecialServicePO
();
specialServicePO
.
setName
(
addSpecialServiceBO
.
getName
());
specialServicePO
.
setPlateNum
(
addSpecialServiceBO
.
getPlateNum
());
specialServicePO
.
setStartLocation
(
addSpecialServiceBO
.
getStartLocation
());
specialServicePO
.
setEndLocation
(
addSpecialServiceBO
.
getEndLocation
());
specialServiceMapper
.
insertOne
(
specialServicePO
);
Integer
specialServiceId
=
specialServicePO
.
getId
();
// 插入特勤路口关系表
List
<
RouteElementVO
>
route
=
addSpecialServiceBO
.
getRoute
();
for
(
int
i
=
0
;
i
<
route
.
size
();
i
++)
{
RouteElementVO
routeElementVO
=
route
.
get
(
i
);
String
startName
=
routeElementVO
.
getStartName
();
BaseCrossInfoPO
startCross
=
baseCrossInfoMapper
.
selectByName
(
startName
);
String
startCrossId
=
startCross
.
getId
();
String
endName
=
routeElementVO
.
getEndName
();
BaseCrossInfoPO
endCross
=
baseCrossInfoMapper
.
selectByName
(
endName
);
String
endCrossId
=
endCross
.
getId
();
RidInfoEntity
ridInfoEntity
=
ridInfoMapper
.
selectByStartEnd
(
startCrossId
,
endCrossId
);
if
(
i
!=
route
.
size
()
-
1
)
{
// 非结束路段
SpecialServiceCrossPO
specialServiceCrossPO
=
new
SpecialServiceCrossPO
();
specialServiceCrossPO
.
setSpecialServiceId
(
specialServiceId
);
specialServiceCrossPO
.
setCrossId
(
startCrossId
);
// 计算方向
if
(
i
==
0
)
{
// 开始路口
specialServiceCrossPO
.
setInDir
(
0
);
public
void
addOrUpdateSpecialService
(
AddSpecialServiceBO
addSpecialServiceBO
)
{
Integer
specialServiceId
=
addSpecialServiceBO
.
getId
();
if
(
ObjectUtil
.
isEmpty
(
specialServiceId
))
{
// 不传ID为新增
// 插入特勤表
SpecialServicePO
specialServicePO
=
new
SpecialServicePO
();
specialServicePO
.
setName
(
addSpecialServiceBO
.
getName
());
specialServicePO
.
setPlateNum
(
addSpecialServiceBO
.
getPlateNum
());
specialServicePO
.
setStartLocation
(
addSpecialServiceBO
.
getStartLocation
());
specialServicePO
.
setEndLocation
(
addSpecialServiceBO
.
getEndLocation
());
specialServiceMapper
.
insertOne
(
specialServicePO
);
Integer
specialServiceIdGenerated
=
specialServicePO
.
getId
();
// 插入特勤路口关系表
List
<
RouteElementVO
>
route
=
addSpecialServiceBO
.
getRoute
();
for
(
int
i
=
0
;
i
<
route
.
size
();
i
++)
{
RouteElementVO
routeElementVO
=
route
.
get
(
i
);
String
startName
=
routeElementVO
.
getStartName
();
BaseCrossInfoPO
startCross
=
baseCrossInfoMapper
.
selectByName
(
startName
);
String
startCrossId
=
startCross
.
getId
();
String
endName
=
routeElementVO
.
getEndName
();
BaseCrossInfoPO
endCross
=
baseCrossInfoMapper
.
selectByName
(
endName
);
String
endCrossId
=
endCross
.
getId
();
RidInfoEntity
ridInfoEntity
=
ridInfoMapper
.
selectByStartEnd
(
startCrossId
,
endCrossId
);
if
(
i
!=
route
.
size
()
-
1
)
{
// 非结束路段
SpecialServiceCrossPO
specialServiceCrossPO
=
new
SpecialServiceCrossPO
();
specialServiceCrossPO
.
setSpecialServiceId
(
specialServiceIdGenerated
);
specialServiceCrossPO
.
setCrossId
(
startCrossId
);
// 计算方向
if
(
i
==
0
)
{
// 开始路口
specialServiceCrossPO
.
setInDir
(
0
);
Integer
outDir
=
ridInfoEntity
.
getOutDir
();
specialServiceCrossPO
.
setOutDir
(
outDir
);
}
else
{
// 中间路口
// 获取上一个路段
RouteElementVO
preRoute
=
route
.
get
(
i
-
1
);
String
preStartName
=
preRoute
.
getStartName
();
BaseCrossInfoPO
preStartCross
=
baseCrossInfoMapper
.
selectByName
(
preStartName
);
String
preStartCrossId
=
preStartCross
.
getId
();
String
preEndName
=
preRoute
.
getEndName
();
BaseCrossInfoPO
preEndCross
=
baseCrossInfoMapper
.
selectByName
(
preEndName
);
String
preEndCrossId
=
preEndCross
.
getId
();
RidInfoEntity
preRid
=
ridInfoMapper
.
selectByStartEnd
(
preStartCrossId
,
preEndCrossId
);
// 当前路口驶入方向
Integer
inDir
=
preRid
.
getInDir
();
// 当前路口使出方向
Integer
outDir
=
ridInfoEntity
.
getOutDir
();
specialServiceCrossPO
.
setInDir
(
inDir
);
specialServiceCrossPO
.
setOutDir
(
outDir
);
}
specialServiceCrossPO
.
setSort
(
i
+
1
);
specialServiceCrossPO
.
setStatus
(
0
);
specialServiceCrossPO
.
setAutoUnlock
(
0
);
specialServiceCrossMapper
.
insertOne
(
specialServiceCrossPO
);
}
else
{
// 结束路段
// 开始路口
SpecialServiceCrossPO
specialServiceCrossPO
=
new
SpecialServiceCrossPO
();
specialServiceCrossPO
.
setSpecialServiceId
(
specialServiceIdGenerated
);
specialServiceCrossPO
.
setCrossId
(
startCrossId
);
// 获取上一个路段
RouteElementVO
preRoute
=
route
.
get
(
i
-
1
);
String
preStartName
=
preRoute
.
getStartName
();
BaseCrossInfoPO
preStartCross
=
baseCrossInfoMapper
.
selectByName
(
preStartName
);
String
preStartCrossId
=
preStartCross
.
getId
();
String
preEndName
=
preRoute
.
getEndName
();
BaseCrossInfoPO
preEndCross
=
baseCrossInfoMapper
.
selectByName
(
preEndName
);
String
preEndCrossId
=
preEndCross
.
getId
();
RidInfoEntity
preRid
=
ridInfoMapper
.
selectByStartEnd
(
preStartCrossId
,
preEndCrossId
);
// 当前路口驶入方向
Integer
inDir
=
preRid
.
getInDir
();
// 当前路口使出方向
Integer
outDir
=
ridInfoEntity
.
getOutDir
();
specialServiceCrossPO
.
setInDir
(
inDir
);
specialServiceCrossPO
.
setOutDir
(
outDir
);
}
else
{
// 中间路口
specialServiceCrossPO
.
setSort
(
i
+
1
);
specialServiceCrossPO
.
setStatus
(
0
);
specialServiceCrossPO
.
setAutoUnlock
(
0
);
specialServiceCrossMapper
.
insertOne
(
specialServiceCrossPO
);
// 结束路口
SpecialServiceCrossPO
specialServiceCrossPOEnd
=
new
SpecialServiceCrossPO
();
specialServiceCrossPOEnd
.
setSpecialServiceId
(
specialServiceIdGenerated
);
specialServiceCrossPOEnd
.
setCrossId
(
endCrossId
);
Integer
inDirEnd
=
ridInfoEntity
.
getInDir
();
specialServiceCrossPOEnd
.
setInDir
(
inDirEnd
);
specialServiceCrossPOEnd
.
setOutDir
(
0
);
specialServiceCrossPOEnd
.
setSort
(
i
+
2
);
specialServiceCrossPOEnd
.
setStatus
(
0
);
specialServiceCrossPOEnd
.
setAutoUnlock
(
0
);
specialServiceCrossMapper
.
insertOne
(
specialServiceCrossPOEnd
);
}
}
}
else
{
// 传ID为修改
// 修改特勤表
SpecialServicePO
specialServicePO
=
new
SpecialServicePO
();
specialServicePO
.
setName
(
addSpecialServiceBO
.
getName
());
specialServicePO
.
setPlateNum
(
addSpecialServiceBO
.
getPlateNum
());
specialServicePO
.
setStartLocation
(
addSpecialServiceBO
.
getStartLocation
());
specialServicePO
.
setEndLocation
(
addSpecialServiceBO
.
getEndLocation
());
specialServiceMapper
.
updateOne
(
specialServiceId
,
specialServicePO
);
// 修改特勤路口关系表
specialServiceCrossMapper
.
deleteCrossBySpecialServiceId
(
specialServiceId
);
List
<
RouteElementVO
>
route
=
addSpecialServiceBO
.
getRoute
();
for
(
int
i
=
0
;
i
<
route
.
size
();
i
++)
{
RouteElementVO
routeElementVO
=
route
.
get
(
i
);
String
startName
=
routeElementVO
.
getStartName
();
BaseCrossInfoPO
startCross
=
baseCrossInfoMapper
.
selectByName
(
startName
);
String
startCrossId
=
startCross
.
getId
();
String
endName
=
routeElementVO
.
getEndName
();
BaseCrossInfoPO
endCross
=
baseCrossInfoMapper
.
selectByName
(
endName
);
String
endCrossId
=
endCross
.
getId
();
RidInfoEntity
ridInfoEntity
=
ridInfoMapper
.
selectByStartEnd
(
startCrossId
,
endCrossId
);
if
(
i
!=
route
.
size
()
-
1
)
{
// 非结束路段
SpecialServiceCrossPO
specialServiceCrossPO
=
new
SpecialServiceCrossPO
();
specialServiceCrossPO
.
setSpecialServiceId
(
specialServiceId
);
specialServiceCrossPO
.
setCrossId
(
startCrossId
);
// 计算方向
if
(
i
==
0
)
{
// 开始路口
specialServiceCrossPO
.
setInDir
(
0
);
Integer
outDir
=
ridInfoEntity
.
getOutDir
();
specialServiceCrossPO
.
setOutDir
(
outDir
);
}
else
{
// 中间路口
// 获取上一个路段
RouteElementVO
preRoute
=
route
.
get
(
i
-
1
);
String
preStartName
=
preRoute
.
getStartName
();
BaseCrossInfoPO
preStartCross
=
baseCrossInfoMapper
.
selectByName
(
preStartName
);
String
preStartCrossId
=
preStartCross
.
getId
();
String
preEndName
=
preRoute
.
getEndName
();
BaseCrossInfoPO
preEndCross
=
baseCrossInfoMapper
.
selectByName
(
preEndName
);
String
preEndCrossId
=
preEndCross
.
getId
();
RidInfoEntity
preRid
=
ridInfoMapper
.
selectByStartEnd
(
preStartCrossId
,
preEndCrossId
);
// 当前路口驶入方向
Integer
inDir
=
preRid
.
getInDir
();
// 当前路口使出方向
Integer
outDir
=
ridInfoEntity
.
getOutDir
();
specialServiceCrossPO
.
setInDir
(
inDir
);
specialServiceCrossPO
.
setOutDir
(
outDir
);
}
specialServiceCrossPO
.
setSort
(
i
+
1
);
specialServiceCrossPO
.
setStatus
(
0
);
specialServiceCrossPO
.
setAutoUnlock
(
0
);
specialServiceCrossMapper
.
insertOne
(
specialServiceCrossPO
);
}
else
{
// 结束路段
// 开始路口
SpecialServiceCrossPO
specialServiceCrossPO
=
new
SpecialServiceCrossPO
();
specialServiceCrossPO
.
setSpecialServiceId
(
specialServiceId
);
specialServiceCrossPO
.
setCrossId
(
startCrossId
);
// 获取上一个路段
RouteElementVO
preRoute
=
route
.
get
(
i
-
1
);
String
preStartName
=
preRoute
.
getStartName
();
...
...
@@ -117,47 +237,22 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
Integer
outDir
=
ridInfoEntity
.
getOutDir
();
specialServiceCrossPO
.
setInDir
(
inDir
);
specialServiceCrossPO
.
setOutDir
(
outDir
);
specialServiceCrossPO
.
setSort
(
i
+
1
);
specialServiceCrossPO
.
setStatus
(
0
);
specialServiceCrossPO
.
setAutoUnlock
(
0
);
specialServiceCrossMapper
.
insertOne
(
specialServiceCrossPO
);
// 结束路口
SpecialServiceCrossPO
specialServiceCrossPOEnd
=
new
SpecialServiceCrossPO
();
specialServiceCrossPOEnd
.
setSpecialServiceId
(
specialServiceId
);
specialServiceCrossPOEnd
.
setCrossId
(
endCrossId
);
Integer
inDirEnd
=
ridInfoEntity
.
getInDir
();
specialServiceCrossPOEnd
.
setInDir
(
inDirEnd
);
specialServiceCrossPOEnd
.
setOutDir
(
0
);
specialServiceCrossPOEnd
.
setSort
(
i
+
2
);
specialServiceCrossPOEnd
.
setStatus
(
0
);
specialServiceCrossPOEnd
.
setAutoUnlock
(
0
);
specialServiceCrossMapper
.
insertOne
(
specialServiceCrossPOEnd
);
}
specialServiceCrossPO
.
setSort
(
i
+
1
);
specialServiceCrossPO
.
setStatus
(
0
);
specialServiceCrossPO
.
setAutoUnlock
(
0
);
specialServiceCrossMapper
.
insertOne
(
specialServiceCrossPO
);
}
else
{
// 结束路段
// 开始路口
SpecialServiceCrossPO
specialServiceCrossPO
=
new
SpecialServiceCrossPO
();
specialServiceCrossPO
.
setSpecialServiceId
(
specialServiceId
);
specialServiceCrossPO
.
setCrossId
(
startCrossId
);
// 获取上一个路段
RouteElementVO
preRoute
=
route
.
get
(
i
-
1
);
String
preStartName
=
preRoute
.
getStartName
();
BaseCrossInfoPO
preStartCross
=
baseCrossInfoMapper
.
selectByName
(
preStartName
);
String
preStartCrossId
=
preStartCross
.
getId
();
String
preEndName
=
preRoute
.
getEndName
();
BaseCrossInfoPO
preEndCross
=
baseCrossInfoMapper
.
selectByName
(
preEndName
);
String
preEndCrossId
=
preEndCross
.
getId
();
RidInfoEntity
preRid
=
ridInfoMapper
.
selectByStartEnd
(
preStartCrossId
,
preEndCrossId
);
// 当前路口驶入方向
Integer
inDir
=
preRid
.
getInDir
();
// 当前路口使出方向
Integer
outDir
=
ridInfoEntity
.
getOutDir
();
specialServiceCrossPO
.
setInDir
(
inDir
);
specialServiceCrossPO
.
setOutDir
(
outDir
);
specialServiceCrossPO
.
setSort
(
i
+
1
);
specialServiceCrossPO
.
setStatus
(
0
);
specialServiceCrossPO
.
setAutoUnlock
(
0
);
specialServiceCrossMapper
.
insertOne
(
specialServiceCrossPO
);
// 结束路口
SpecialServiceCrossPO
specialServiceCrossPOEnd
=
new
SpecialServiceCrossPO
();
specialServiceCrossPOEnd
.
setSpecialServiceId
(
specialServiceId
);
specialServiceCrossPOEnd
.
setCrossId
(
endCrossId
);
Integer
inDirEnd
=
ridInfoEntity
.
getInDir
();
specialServiceCrossPOEnd
.
setInDir
(
inDirEnd
);
specialServiceCrossPOEnd
.
setOutDir
(
0
);
specialServiceCrossPOEnd
.
setSort
(
i
+
2
);
specialServiceCrossPOEnd
.
setStatus
(
0
);
specialServiceCrossPOEnd
.
setAutoUnlock
(
0
);
specialServiceCrossMapper
.
insertOne
(
specialServiceCrossPOEnd
);
}
}
}
...
...
@@ -419,6 +514,90 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
}
}
@Override
public
SpecialServiceDetailVO
specialServiceDetail
(
SpecialServiceIdBO
specialServiceIdBO
)
{
SpecialServiceDetailVO
specialServiceDetailVO
=
new
SpecialServiceDetailVO
();
Integer
specialServiceId
=
specialServiceIdBO
.
getId
();
SpecialServicePO
specialServicePO
=
specialServiceMapper
.
selectById
(
specialServiceId
);
specialServiceDetailVO
.
setName
(
specialServicePO
.
getName
());
List
<
SpecialServiceDetailVO
.
CrossListElement
>
crossList
=
buildCrossList
(
specialServiceId
);
specialServiceDetailVO
.
setCrossList
(
crossList
);
return
specialServiceDetailVO
;
}
private
List
<
SpecialServiceDetailVO
.
CrossListElement
>
buildCrossList
(
Integer
specialServiceId
)
{
List
<
SpecialServiceDetailVO
.
CrossListElement
>
crossList
=
new
ArrayList
<>();
List
<
SpecialServiceCrossPO
>
specialServiceCrossList
=
specialServiceCrossMapper
.
selectBySpecialServiceId
(
specialServiceId
);
for
(
int
i
=
0
;
i
<
specialServiceCrossList
.
size
();
i
++)
{
SpecialServiceCrossPO
currentCross
=
specialServiceCrossList
.
get
(
i
);
String
currentCrossId
=
currentCross
.
getCrossId
();
SpecialServiceDetailVO
.
CrossListElement
crossListElement
=
new
SpecialServiceDetailVO
.
CrossListElement
();
String
crossId
=
currentCross
.
getCrossId
();
BaseCrossInfoPO
baseCrossInfoPO
=
baseCrossInfoMapper
.
selectById
(
crossId
);
crossListElement
.
setCrossName
(
baseCrossInfoPO
.
getName
());
crossListElement
.
setCrossId
(
crossId
);
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
);
}
crossListElement
.
setStatus
(
currentCross
.
getStatus
());
crossListElement
.
setSort
(
currentCross
.
getSort
());
crossList
.
add
(
crossListElement
);
}
return
crossList
;
}
@NotNull
private
List
<
BaseCrossInfoPO
>
getRouteList
(
BaseCrossInfoPO
startCross
,
BaseCrossInfoPO
endCross
)
{
String
endCrossLonLatStr
=
getCrossLonLatStr
(
endCross
);
...
...
@@ -459,8 +638,10 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
String
secondLonLatStr
=
getCrossLonLatStr
(
secondCross
);
routeElementVO
.
setStartLonLat
(
firstLonLatStr
);
routeElementVO
.
setStartId
(
firstCross
.
getId
());
routeElementVO
.
setStartName
(
firstCross
.
getName
());
routeElementVO
.
setEndLonLat
(
secondLonLatStr
);
routeElementVO
.
setEndId
(
secondCross
.
getId
());
routeElementVO
.
setEndName
(
secondCross
.
getName
());
// 获取路况,1为进口
...
...
signal-control-service/src/main/java/net/wanji/web/vo/RouteElementVO.java
→
signal-control-service/src/main/java/net/wanji/web/vo/
specialService/
RouteElementVO.java
View file @
760d8b20
package
net
.
wanji
.
web
.
vo
;
package
net
.
wanji
.
web
.
vo
.
specialService
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
...
...
@@ -13,10 +13,14 @@ import lombok.Data;
public
class
RouteElementVO
{
@ApiModelProperty
(
value
=
"起点坐标"
)
private
String
startLonLat
;
@ApiModelProperty
(
value
=
"起点路口ID"
)
private
String
startId
;
@ApiModelProperty
(
value
=
"起点路口名称"
)
private
String
startName
;
@ApiModelProperty
(
value
=
"终点坐标"
)
private
String
endLonLat
;
@ApiModelProperty
(
value
=
"终点路口ID"
)
private
String
endId
;
@ApiModelProperty
(
value
=
"终点路口名称"
)
private
String
endName
;
@ApiModelProperty
(
value
=
"路况 1畅通;2缓行;3拥堵;4严重拥堵;5未知"
)
...
...
signal-control-service/src/main/java/net/wanji/web/vo/specialService/SpecialServiceDetailVO.java
0 → 100644
View file @
760d8b20
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 2023/5/16 14:27
*/
@NoArgsConstructor
@Data
@ApiModel
(
value
=
"SpecialServiceDetailVO"
,
description
=
"特勤详情"
)
public
class
SpecialServiceDetailVO
{
@ApiModelProperty
(
value
=
"特勤名称"
)
private
String
name
;
@ApiModelProperty
(
value
=
"路口列表"
)
private
List
<
CrossListElement
>
crossList
;
@NoArgsConstructor
@Data
public
static
class
CrossListElement
{
@ApiModelProperty
(
value
=
"路口名称"
)
private
String
crossName
;
@ApiModelProperty
(
value
=
"路口ID"
)
private
String
crossId
;
@ApiModelProperty
(
value
=
"路口路线起点"
)
private
String
routeStart
;
@ApiModelProperty
(
value
=
"路口路线终点"
)
private
String
routeEnd
;
@ApiModelProperty
(
value
=
"锁定状态:1锁定;0解锁"
)
private
Integer
status
;
@ApiModelProperty
(
value
=
"路口顺序号"
)
private
Integer
sort
;
}
}
signal-control-service/src/main/resources/mapper/SpecialServiceCrossMapper.xml
View file @
760d8b20
...
...
@@ -78,10 +78,8 @@
where special_service_id = #{specialServiceId} and sort = #{preSort}
</select>
<select
id=
"selectBySpecialServiceId"
resultMap=
"BaseResultMap"
>
select
id,special_service_id,cross_id,dir,turn,sort,status,gmt_create,gmt_modified
select
<include
refid=
"Base_Column_List"
></include>
from t_special_service_cross
where special_service_id = #{specialServiceId}
order by sort
...
...
signal-control-service/src/main/resources/mapper/SpecialServiceMapper.xml
View file @
760d8b20
...
...
@@ -64,6 +64,37 @@
where id = #{specialServiceId}
</update>
<update
id=
"updateOne"
>
update t_special_service_info
<set>
<if
test=
"name != null and name != ''"
>
name = #{name},
</if>
<if
test=
"plateNum != null and plateNum != ''"
>
plate_num = #{plateNum},
</if>
<if
test=
"controlModel != null and controlModel != ''"
>
control_model = #{controlModel},
</if>
<if
test=
"length != null and length != ''"
>
length = #{length},
</if>
<if
test=
"status != null and status != ''"
>
status = #{status},
</if>
<if
test=
"startLocation != null and startLocation != ''"
>
start_location = #{startLocation},
</if>
<if
test=
"endLocation != null and endLocation != ''"
>
end_location = #{endLocation},
</if>
<if
test=
"isDel != null and isDel != ''"
>
is_del = #{isDel},
</if>
</set>
where id = #{specialServiceId}
</update>
<select
id=
"selectByAdCode"
resultMap=
"BaseResultMap"
>
select
id,name,control_model,length,is_del,status,gmt_create,gmt_modified
...
...
@@ -84,4 +115,10 @@
order by gmt_modified desc
</select>
<select
id=
"selectById"
resultType=
"net.wanji.web.po.SpecialServicePO"
>
select
<include
refid=
"Base_Column_List"
></include>
from t_special_service_info
where id = #{specialServiceId}
</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