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
2f8b1844
Commit
2f8b1844
authored
May 18, 2023
by
hanbing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[add] 快速特勤,添加特勤
parent
e7e45a4a
Changes
14
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
194 additions
and
306 deletions
+194
-306
AddSpecialServiceBO.java
...e/src/main/java/net/wanji/web/bo/AddSpecialServiceBO.java
+30
-0
SpecialServiceController.java
...va/net/wanji/web/controller/SpecialServiceController.java
+4
-57
SpecialServiceCrossMapper.java
.../java/net/wanji/web/mapper/SpecialServiceCrossMapper.java
+0
-2
SpecialServiceMapper.java
.../main/java/net/wanji/web/mapper/SpecialServiceMapper.java
+0
-2
SpecialServiceCrossPO.java
...src/main/java/net/wanji/web/po/SpecialServiceCrossPO.java
+13
-11
SpecialServicePO.java
...vice/src/main/java/net/wanji/web/po/SpecialServicePO.java
+8
-10
SpecialServiceService.java
...ain/java/net/wanji/web/service/SpecialServiceService.java
+2
-9
SpecialServiceServiceImpl.java
...net/wanji/web/service/impl/SpecialServiceServiceImpl.java
+98
-178
RouteElementVO.java
...ervice/src/main/java/net/wanji/web/vo/RouteElementVO.java
+2
-0
AddSpecialServiceInVO.java
...et/wanji/web/vo/specialService/AddSpecialServiceInVO.java
+0
-19
SpecialServiceCrossMapper.xml
...e/src/main/resources/mapper/SpecialServiceCrossMapper.xml
+18
-12
SpecialServiceMapper.xml
...ervice/src/main/resources/mapper/SpecialServiceMapper.xml
+12
-5
BaseCrossInfoMapper.java
...ava/net/wanji/databus/dao/mapper/BaseCrossInfoMapper.java
+1
-1
BaseCrossInfoMapper.xml
wj-databus/src/main/resources/mapper/BaseCrossInfoMapper.xml
+6
-0
No files found.
signal-control-service/src/main/java/net/wanji/web/bo/AddSpecialServiceBO.java
0 → 100644
View file @
2f8b1844
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
javax.validation.constraints.Pattern
;
import
java.util.List
;
/**
* @author Kent HAN
* @date 2022/11/8 11:01
*/
@Data
@ApiModel
(
value
=
"AddSpecialServiceBO"
,
description
=
"快速特勤-添加特勤输入参数"
)
public
class
AddSpecialServiceBO
{
@ApiModelProperty
(
value
=
"特勤名称"
)
@Pattern
(
regexp
=
"^[\\u4E00-\\u9FA5\\w\\-]{0,16}$"
,
message
=
"只能包含中文、英文、数字、下划线和中横线,0~16个字符"
)
String
name
;
@ApiModelProperty
(
value
=
"起点坐标,格式:112.968523,28.179455"
)
String
startLocation
;
@ApiModelProperty
(
value
=
"终点坐标,格式:112.968523,28.179455"
)
String
endLocation
;
@ApiModelProperty
(
value
=
"特勤路线"
)
List
<
RouteElementVO
>
route
;
@ApiModelProperty
(
value
=
"关联车辆"
)
@Pattern
(
regexp
=
"^[\\u4E00-\\u9FA5\\w\\-]{0,16}$"
,
message
=
"编号只能包含中文、英文、数字、下划线和中横线,0~16个字符"
)
String
plateNum
;
}
signal-control-service/src/main/java/net/wanji/web/controller/SpecialServiceController.java
View file @
2f8b1844
...
...
@@ -7,9 +7,9 @@ import io.swagger.annotations.ApiResponses;
import
net.wanji.common.annotation.aspect.AspectLog
;
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.SpecialServiceRouteBO
;
import
net.wanji.web.common.exception.CrossRelationException
;
import
net.wanji.web.service.SpecialServiceService
;
import
net.wanji.web.vo.RouteElementVO
;
import
net.wanji.web.vo.specialService.*
;
...
...
@@ -19,6 +19,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.validation.Valid
;
import
javax.ws.rs.core.MediaType
;
import
java.util.List
;
import
java.util.Set
;
...
...
@@ -61,8 +62,8 @@ public class SpecialServiceController {
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@PostMapping
(
value
=
"/addSpecialService"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
public
JsonViewObject
addSpecialService
(
@RequestBody
AddSpecialServiceInVO
addSpecialServiceInV
O
)
{
specialServiceService
.
addSpecialService
(
addSpecialService
InV
O
);
public
JsonViewObject
addSpecialService
(
@RequestBody
@Valid
AddSpecialServiceBO
addSpecialServiceB
O
)
{
specialServiceService
.
addSpecialService
(
addSpecialService
B
O
);
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
return
jsonViewObject
.
success
();
...
...
@@ -109,37 +110,6 @@ public class SpecialServiceController {
return
jsonViewObject
.
success
();
}
@AspectLog
(
description
=
"添加路口"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
INSERT
)
@ApiOperation
(
value
=
"添加路口"
,
notes
=
"添加路口"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@PostMapping
(
value
=
"/addCross"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
public
JsonViewObject
addCross
(
@RequestBody
AddCrossInVO
addCrossInVO
)
{
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
try
{
specialServiceService
.
addCross
(
addCrossInVO
);
return
jsonViewObject
.
success
();
}
catch
(
CrossRelationException
e
)
{
return
jsonViewObject
.
fail
(
"路段关系不正确"
);
}
}
@AspectLog
(
description
=
"路口列表"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
QUERY
)
@ApiOperation
(
value
=
"路口列表"
,
notes
=
"路口列表"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@PostMapping
(
value
=
"/crossList"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
CrossListOutVO
.
class
),
})
public
JsonViewObject
crossList
(
@RequestBody
CrossListInVO
crossListInVO
)
{
Integer
specialServiceId
=
crossListInVO
.
getSpecialServiceId
();
List
<
CrossListOutVO
>
crossListOutVOList
=
specialServiceService
.
crossList
(
specialServiceId
);
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
return
jsonViewObject
.
success
(
crossListOutVOList
);
}
@AspectLog
(
description
=
"更新路口"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"更新路口"
,
notes
=
"更新路口"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
...
...
@@ -164,29 +134,6 @@ public class SpecialServiceController {
return
jsonViewObject
.
success
();
}
@AspectLog
(
description
=
"一键特勤"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"一键特勤"
,
notes
=
"一键特勤"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@PostMapping
(
value
=
"/enableSpecialService"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
public
JsonViewObject
enableSpecialService
(
@RequestBody
EnableDisableSpecialServiceInVO
enableDisableSpecialServiceInVO
)
{
specialServiceService
.
enableSpecialService
(
enableDisableSpecialServiceInVO
);
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
return
jsonViewObject
.
success
();
}
@AspectLog
(
description
=
"一键取消特勤"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
DELETE
)
@ApiOperation
(
value
=
"一键取消特勤"
,
notes
=
"一键取消特勤"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@PostMapping
(
value
=
"/disableSpecialService"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
public
JsonViewObject
disableSpecialService
(
@RequestBody
EnableDisableSpecialServiceInVO
enableDisableSpecialServiceInVO
)
{
specialServiceService
.
disableSpecialService
(
enableDisableSpecialServiceInVO
);
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
return
jsonViewObject
.
success
();
}
@AspectLog
(
description
=
"路口进口列表"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
QUERY
)
@ApiOperation
(
value
=
"路口进口列表"
,
notes
=
"路口进口列表"
,
response
=
JsonViewObject
.
class
,
...
...
signal-control-service/src/main/java/net/wanji/web/mapper/SpecialServiceCrossMapper.java
View file @
2f8b1844
package
net
.
wanji
.
web
.
mapper
;
import
com.baomidou.dynamic.datasource.annotation.DS
;
import
net.wanji.web.po.SpecialServiceCrossPO
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
...
...
@@ -12,7 +11,6 @@ import java.util.List;
* @date 2022/11/8 14:48
*/
@Repository
@DS
(
"webService"
)
public
interface
SpecialServiceCrossMapper
{
void
insertOne
(
SpecialServiceCrossPO
specialServiceCrossPO
);
...
...
signal-control-service/src/main/java/net/wanji/web/mapper/SpecialServiceMapper.java
View file @
2f8b1844
package
net
.
wanji
.
web
.
mapper
;
import
com.baomidou.dynamic.datasource.annotation.DS
;
import
net.wanji.web.po.SpecialServicePO
;
import
net.wanji.web.vo.specialService.UpdateSpecialServiceInVO
;
import
org.apache.ibatis.annotations.Param
;
...
...
@@ -13,7 +12,6 @@ import java.util.List;
* @date 2022/11/8 11:14
*/
@Repository
@DS
(
"webService"
)
public
interface
SpecialServiceMapper
{
void
insertOne
(
SpecialServicePO
specialServicePO
);
...
...
signal-control-service/src/main/java/net/wanji/web/po/SpecialServiceCrossPO.java
View file @
2f8b1844
...
...
@@ -19,21 +19,23 @@ public class SpecialServiceCrossPO {
/** 特勤ID */
@ApiModelProperty
(
name
=
"特勤ID"
,
notes
=
""
)
private
Integer
specialServiceId
;
@ApiModelProperty
(
name
=
"分组名称"
,
notes
=
""
)
private
String
groupName
=
"未分组路口"
;
/** 路口编号 */
@ApiModelProperty
(
name
=
"路口
编号
"
,
notes
=
""
)
@ApiModelProperty
(
name
=
"路口
ID
"
,
notes
=
""
)
private
String
crossId
;
/** 进口方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北 */
@ApiModelProperty
(
name
=
"进口方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北"
,
notes
=
""
)
private
Integer
dir
=
1
;
/** 转向:l左转;s直行;r右转;u掉头 */
@ApiModelProperty
(
name
=
"转向:l左转;s直行;r右转;u掉头"
,
notes
=
""
)
private
String
turn
;
/** 顺序号 */
@ApiModelProperty
(
name
=
"顺序号"
,
notes
=
""
)
@ApiModelProperty
(
name
=
"驶入方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北"
,
notes
=
""
)
private
Integer
inDir
;
@ApiModelProperty
(
name
=
"驶出方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北"
,
notes
=
""
)
private
Integer
outDir
;
@ApiModelProperty
(
name
=
"路口顺序号"
,
notes
=
""
)
private
Integer
sort
;
/** 执行状态:1成功;0失败 */
@ApiModelProperty
(
name
=
"执行状态:1成功;0失败"
,
notes
=
""
)
private
Integer
status
=
0
;
@ApiModelProperty
(
name
=
"锁定状态:1锁定;0解锁"
,
notes
=
""
)
private
Integer
status
;
@ApiModelProperty
(
name
=
"自动解锁:1是;0否"
,
notes
=
""
)
private
Integer
autoUnlock
;
/** 创建时间 */
@ApiModelProperty
(
name
=
"创建时间"
,
notes
=
""
)
private
Date
gmtCreate
;
...
...
signal-control-service/src/main/java/net/wanji/web/po/SpecialServicePO.java
View file @
2f8b1844
...
...
@@ -12,29 +12,27 @@ import java.util.Date;
*/
@Data
public
class
SpecialServicePO
{
/** 特勤ID */
@Id
@ApiModelProperty
(
name
=
"特勤ID"
,
notes
=
""
)
private
Integer
id
;
/** 特勤名称 */
@ApiModelProperty
(
name
=
"特勤名称"
,
notes
=
""
)
private
String
name
;
/** 控制类型:1手动;2自动 */
@ApiModelProperty
(
name
=
"关联车辆车牌号"
,
notes
=
""
)
private
String
plateNum
;
@ApiModelProperty
(
name
=
"控制类型:1手动;2自动"
,
notes
=
""
)
private
Integer
controlModel
=
1
;
/** 特勤线路长度 */
@ApiModelProperty
(
name
=
"特勤线路长度"
,
notes
=
""
)
private
Double
length
=
0.0
;
/** 是否被删除:1是;0否 */
@ApiModelProperty
(
name
=
"是否被删除:1是;0否"
,
notes
=
""
)
private
Integer
isDel
=
0
;
/** 特勤状态:1执行;0未执行 */
@ApiModelProperty
(
name
=
"特勤状态:1执行;0未执行"
,
notes
=
""
)
private
Integer
status
=
0
;
/** 创建时间 */
@ApiModelProperty
(
value
=
"起点坐标,格式:112.968523,28.179455"
)
String
startLocation
;
@ApiModelProperty
(
value
=
"终点坐标,格式:112.968523,28.179455"
)
String
endLocation
;
@ApiModelProperty
(
name
=
"是否被删除:1是;0否"
,
notes
=
""
)
private
Integer
isDel
=
0
;
@ApiModelProperty
(
name
=
"创建时间"
,
notes
=
""
)
private
Date
gmtCreate
;
/** 修改时间 */
@ApiModelProperty
(
name
=
"修改时间"
,
notes
=
""
)
private
Date
gmtModified
;
}
signal-control-service/src/main/java/net/wanji/web/service/SpecialServiceService.java
View file @
2f8b1844
package
net
.
wanji
.
web
.
service
;
import
net.wanji.web.bo.AddSpecialServiceBO
;
import
net.wanji.web.bo.IsValidPointBO
;
import
net.wanji.web.bo.SpecialServiceRouteBO
;
import
net.wanji.web.vo.RouteElementVO
;
...
...
@@ -13,7 +14,7 @@ import java.util.Set;
* @date 2022/11/8 11:06
*/
public
interface
SpecialServiceService
{
void
addSpecialService
(
AddSpecialService
InVO
addSpecialServiceInV
O
);
void
addSpecialService
(
AddSpecialService
BO
addSpecialServiceB
O
);
List
<
ListSpecialServicesOutVO
>
listSpecialServices
(
String
adCode
);
...
...
@@ -21,18 +22,10 @@ public interface SpecialServiceService {
void
deleteSpecialService
(
Integer
id
);
void
addCross
(
AddCrossInVO
addCrossInVO
);
List
<
CrossListOutVO
>
crossList
(
Integer
specialServiceId
);
void
updateCross
(
UpdateCrossInVO
updateCrossInVO
);
void
deleteCross
(
DeleteCrossInVO
deleteCrossInVO
);
void
enableSpecialService
(
EnableDisableSpecialServiceInVO
enableDisableSpecialServiceInVO
);
void
disableSpecialService
(
EnableDisableSpecialServiceInVO
enableDisableSpecialServiceInVO
);
Set
<
String
>
crossInList
(
String
crossId
);
List
<
List
<
RouteElementVO
>>
specialServiceRoute
(
SpecialServiceRouteBO
specialServiceRouteBO
);
...
...
signal-control-service/src/main/java/net/wanji/web/service/impl/SpecialServiceServiceImpl.java
View file @
2f8b1844
...
...
@@ -2,7 +2,6 @@ package net.wanji.web.service.impl;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.http.HttpUtil
;
import
com.google.gson.Gson
;
import
com.google.gson.GsonBuilder
;
import
net.wanji.common.gts.GeometryUtil
;
...
...
@@ -14,13 +13,10 @@ import net.wanji.databus.dao.mapper.BaseCrossInfoMapper;
import
net.wanji.databus.dao.mapper.CrossDirDataRealtimeMapper
;
import
net.wanji.databus.dao.mapper.RidInfoMapper
;
import
net.wanji.databus.po.BaseCrossInfoPO
;
import
net.wanji.
databus.po.TBaseCrossInfo
;
import
net.wanji.
web.bo.AddSpecialServiceBO
;
import
net.wanji.web.bo.IsValidPointBO
;
import
net.wanji.web.bo.SpecialServiceRouteBO
;
import
net.wanji.web.common.enums.CrossDirEnum
;
import
net.wanji.web.common.enums.CrossPhasePlanTurnTypeEnum
;
import
net.wanji.web.common.enums.SpecialServiceCrossTurnEnum
;
import
net.wanji.web.common.exception.CrossRelationException
;
import
net.wanji.web.mapper.*
;
import
net.wanji.web.po.CrossDirTurnPO
;
import
net.wanji.web.po.RidInfoPO
;
...
...
@@ -28,7 +24,10 @@ 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.*
;
import
net.wanji.web.vo.specialService.DeleteCrossInVO
;
import
net.wanji.web.vo.specialService.ListSpecialServicesOutVO
;
import
net.wanji.web.vo.specialService.UpdateCrossInVO
;
import
net.wanji.web.vo.specialService.UpdateSpecialServiceInVO
;
import
org.jetbrains.annotations.NotNull
;
import
org.locationtech.jts.geom.Geometry
;
import
org.springframework.beans.BeanUtils
;
...
...
@@ -68,11 +67,101 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
private
CrossDirDataRealtimeMapper
crossDirDataRealtimeMapper
;
@Override
public
void
addSpecialService
(
AddSpecialServiceInVO
addSpecialServiceInVO
)
{
@Transactional
public
void
addSpecialService
(
AddSpecialServiceBO
addSpecialServiceBO
)
{
// 插入特勤表
SpecialServicePO
specialServicePO
=
new
SpecialServicePO
();
String
name
=
addSpecialServiceInVO
.
getName
();
specialServicePO
.
setName
(
name
);
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
);
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
();
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
);
}
}
}
@Override
...
...
@@ -113,96 +202,6 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
specialServiceCrossMapper
.
deleteCrossBySpecialServiceId
(
id
);
}
@Override
@Transactional
public
void
addCross
(
AddCrossInVO
addCrossInVO
)
throws
RuntimeException
{
Integer
specialServiceId
=
addCrossInVO
.
getSpecialServiceId
();
String
endCrossid
=
addCrossInVO
.
getCrossId
();
SpecialServiceCrossPO
specialServiceCrossPO
=
new
SpecialServiceCrossPO
();
BeanUtils
.
copyProperties
(
addCrossInVO
,
specialServiceCrossPO
);
// 构造顺序号
Integer
maxSort
=
specialServiceCrossMapper
.
getMaxSort
(
specialServiceId
);
if
(
maxSort
==
null
)
{
maxSort
=
1
;
}
else
{
maxSort
++;
}
if
(
maxSort
>
1
)
{
// 插入路段长度,插入转向
// 查询上一个路口ID
Integer
preSort
=
maxSort
-
1
;
String
startCrossid
=
specialServiceCrossMapper
.
selectCrossIdBySort
(
specialServiceId
,
preSort
);
// 查询路段
RidInfoPO
ridInfoPO
=
customRidInfoMapper
.
selectOne
(
startCrossid
,
endCrossid
);
// 路段关系不正确
if
(
ridInfoPO
==
null
)
{
throw
new
CrossRelationException
(
"路段关系不正确"
);
}
// 插入路段长度
Double
roadLength
=
ridInfoPO
.
getLength
();
Double
oldLength
=
specialServiceMapper
.
selectRoadLength
(
specialServiceId
);
oldLength
+=
roadLength
;
specialServiceMapper
.
updateLength
(
specialServiceId
,
oldLength
);
// 插入上一个路口转向
String
startCrossOutDirId
=
ridInfoPO
.
getStartCrossdirid
();
Integer
startCrossInDir
=
specialServiceCrossMapper
.
selectStartCrossInDir
(
specialServiceId
,
startCrossid
);
String
startCrossInDirId
=
startCrossid
+
"_"
+
startCrossInDir
+
"_2_1"
;
CrossDirTurnPO
crossDirTurnPO
=
crossDirTurnMapper
.
selectOneByInAndOutIds
(
startCrossInDirId
,
startCrossOutDirId
);
String
turntype
=
crossDirTurnPO
.
getTurntype
();
specialServiceCrossMapper
.
updateTurn
(
specialServiceId
,
startCrossid
,
turntype
);
// 更新当前路口进口
String
endDirCode
=
ridInfoPO
.
getEndDir
();
Integer
endDirInt
=
Integer
.
parseInt
(
endDirCode
);
specialServiceCrossPO
.
setDir
(
endDirInt
);
}
specialServiceCrossPO
.
setSort
(
maxSort
);
specialServiceCrossMapper
.
insertOne
(
specialServiceCrossPO
);
}
@Override
public
List
<
CrossListOutVO
>
crossList
(
Integer
specialServiceId
)
{
List
<
SpecialServiceCrossPO
>
specialServiceCrossPOList
=
specialServiceCrossMapper
.
selectBySpecialServiceId
(
specialServiceId
);
List
<
CrossListOutVO
>
crossListOutVOList
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
specialServiceCrossPOList
.
size
();
i
++)
{
SpecialServiceCrossPO
specialServiceCrossPO
=
specialServiceCrossPOList
.
get
(
i
);
CrossListOutVO
crossListOutVO
=
new
CrossListOutVO
();
String
crossId
=
specialServiceCrossPO
.
getCrossId
();
crossListOutVO
.
setCrossId
(
crossId
);
Integer
sort
=
specialServiceCrossPO
.
getSort
();
crossListOutVO
.
setSort
(
sort
);
crossListOutVO
.
setStatus
(
specialServiceCrossPO
.
getStatus
());
TBaseCrossInfo
tBaseCrossInfo
=
tBaseBaseCrossInfoMapper
.
selectByPrimaryKey
(
specialServiceCrossPO
.
getCrossId
());
// 经纬度
String
location
=
tBaseCrossInfo
.
getLocation
();
double
[]
lonLat
=
CrossUtil
.
getLonLat
(
location
);
crossListOutVO
.
setLongitude
(
lonLat
[
0
]);
crossListOutVO
.
setLatitude
(
lonLat
[
1
]);
// 路口名称
crossListOutVO
.
setName
(
tBaseCrossInfo
.
getName
());
// 获取控制方向
Integer
dirCode
=
specialServiceCrossPO
.
getDir
();
String
dir
=
CrossDirEnum
.
getMsgByCode
(
dirCode
);
String
turnCode
=
specialServiceCrossPO
.
getTurn
();
if
(
turnCode
!=
null
)
{
String
turn
=
SpecialServiceCrossTurnEnum
.
getMsgByCode
(
turnCode
);
String
dirAndTurn
=
dir
+
turn
;
crossListOutVO
.
setDirAndTurn
(
dirAndTurn
);
}
// 获取wkt
if
(
i
<
specialServiceCrossPOList
.
size
()
-
1
)
{
SpecialServiceCrossPO
nextPO
=
specialServiceCrossPOList
.
get
(
i
+
1
);
String
startCrossid
=
specialServiceCrossPO
.
getCrossId
();
String
endCrossid
=
nextPO
.
getCrossId
();
String
wkt
=
customRidInfoMapper
.
selectWkt
(
startCrossid
,
endCrossid
);
crossListOutVO
.
setWkt
(
wkt
);
}
crossListOutVOList
.
add
(
crossListOutVO
);
}
return
crossListOutVOList
;
}
@Override
@Transactional
public
void
updateCross
(
UpdateCrossInVO
updateCrossInVO
)
{
...
...
@@ -245,85 +244,6 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
specialServiceCrossMapper
.
deleteCross
(
specialServiceId
,
crossId
);
}
@Override
public
void
enableSpecialService
(
EnableDisableSpecialServiceInVO
enableDisableSpecialServiceInVO
)
{
Integer
specialServiceId
=
enableDisableSpecialServiceInVO
.
getSpecialServiceId
();
specialServiceMapper
.
updateStatusEnable
(
specialServiceId
);
List
<
SpecialServiceCrossPO
>
specialServiceCrossPOList
=
specialServiceCrossMapper
.
selectBySpecialServiceId
(
specialServiceId
);
for
(
SpecialServiceCrossPO
specialServiceCrossPO
:
specialServiceCrossPOList
)
{
// 构造请求体
EnableDisableSpecialServiceOutVO
enableDisableSpecialServiceOutVO
=
new
EnableDisableSpecialServiceOutVO
();
PhaseLockVO
phaseLockVO
=
new
PhaseLockVO
();
Integer
dirInt
=
specialServiceCrossPO
.
getDir
();
String
dirStr
=
dirInt
.
toString
();
String
turnStr
=
specialServiceCrossPO
.
getTurn
();
String
turnCode
=
CrossPhasePlanTurnTypeEnum
.
getCodeByMsg
(
turnStr
);
String
phaseId
=
crossPhasePlanMapper
.
selectPhaseId
(
dirStr
,
turnCode
);
phaseLockVO
.
setPhaseid
(
phaseId
);
List
<
PhaseLockVO
>
phaseLockVOList
=
Arrays
.
asList
(
phaseLockVO
);
enableDisableSpecialServiceOutVO
.
setPhases
(
phaseLockVOList
);
enableDisableSpecialServiceOutVO
.
setCommand
(
1
);
String
crossId
=
specialServiceCrossPO
.
getCrossId
();
// 发送请求
String
url
=
"http://10.102.1.182/utc/controlCommand/lockControl"
;
String
s
=
gson
.
toJson
(
enableDisableSpecialServiceOutVO
);
String
response
=
HttpUtil
.
post
(
url
,
s
);
EnableDisableSpecialServiceResponseVO
enableDisableSpecialServiceResponseVO
=
gson
.
fromJson
(
response
,
EnableDisableSpecialServiceResponseVO
.
class
);
Boolean
success
=
enableDisableSpecialServiceResponseVO
.
getSuccess
();
// 更新路口状态
if
(
success
)
{
specialServiceCrossMapper
.
updateStatusSuccess
(
specialServiceId
,
crossId
);
}
else
{
specialServiceCrossMapper
.
updateStatusFail
(
specialServiceId
,
crossId
);
}
}
}
@Override
public
void
disableSpecialService
(
EnableDisableSpecialServiceInVO
enableDisableSpecialServiceInVO
)
{
Integer
specialServiceId
=
enableDisableSpecialServiceInVO
.
getSpecialServiceId
();
specialServiceMapper
.
updateStatusDisable
(
specialServiceId
);
List
<
SpecialServiceCrossPO
>
specialServiceCrossPOList
=
specialServiceCrossMapper
.
selectBySpecialServiceId
(
specialServiceId
);
for
(
SpecialServiceCrossPO
specialServiceCrossPO
:
specialServiceCrossPOList
)
{
// 构造请求体
EnableDisableSpecialServiceOutVO
enableDisableSpecialServiceOutVO
=
new
EnableDisableSpecialServiceOutVO
();
PhaseLockVO
phaseLockVO
=
new
PhaseLockVO
();
Integer
dirInt
=
specialServiceCrossPO
.
getDir
();
String
dirStr
=
dirInt
.
toString
();
String
turnStr
=
specialServiceCrossPO
.
getTurn
();
String
turnCode
=
CrossPhasePlanTurnTypeEnum
.
getCodeByMsg
(
turnStr
);
String
phaseId
=
crossPhasePlanMapper
.
selectPhaseId
(
dirStr
,
turnCode
);
phaseLockVO
.
setPhaseid
(
phaseId
);
List
<
PhaseLockVO
>
phaseLockVOList
=
Arrays
.
asList
(
phaseLockVO
);
enableDisableSpecialServiceOutVO
.
setPhases
(
phaseLockVOList
);
enableDisableSpecialServiceOutVO
.
setCommand
(
0
);
String
crossId
=
specialServiceCrossPO
.
getCrossId
();
// 发送请求
String
url
=
"http://10.102.1.182/utc/controlCommand/lockControl"
;
String
s
=
gson
.
toJson
(
enableDisableSpecialServiceOutVO
);
String
response
=
HttpUtil
.
post
(
url
,
s
);
EnableDisableSpecialServiceResponseVO
enableDisableSpecialServiceResponseVO
=
gson
.
fromJson
(
response
,
EnableDisableSpecialServiceResponseVO
.
class
);
Boolean
success
=
enableDisableSpecialServiceResponseVO
.
getSuccess
();
// 更新路口状态
if
(
success
)
{
specialServiceCrossMapper
.
updateStatusSuccess
(
specialServiceId
,
crossId
);
}
else
{
specialServiceCrossMapper
.
updateStatusFail
(
specialServiceId
,
crossId
);
}
}
}
@Override
public
Set
<
String
>
crossInList
(
String
crossId
)
{
List
<
String
>
crossInIdList
=
crossDirTurnMapper
.
crossInList
(
crossId
);
...
...
signal-control-service/src/main/java/net/wanji/web/vo/RouteElementVO.java
View file @
2f8b1844
package
net
.
wanji
.
web
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
...
...
@@ -8,6 +9,7 @@ import lombok.Data;
* @date 2023/5/16 14:27
*/
@Data
@ApiModel
(
value
=
"RouteElementVO"
,
description
=
"特勤路线列表元素"
)
public
class
RouteElementVO
{
@ApiModelProperty
(
value
=
"起点坐标"
)
private
String
startLonLat
;
...
...
signal-control-service/src/main/java/net/wanji/web/vo/specialService/AddSpecialServiceInVO.java
deleted
100644 → 0
View file @
e7e45a4a
package
net
.
wanji
.
web
.
vo
.
specialService
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @author Kent HAN
* @date 2022/11/8 11:01
*/
@Data
@ApiModel
(
value
=
"AddSpecialServiceInVO"
,
description
=
"快速特勤-添加特勤输入参数"
)
public
class
AddSpecialServiceInVO
{
@ApiModelProperty
(
value
=
"城市代码,示例值:110000"
)
String
adCode
;
@ApiModelProperty
(
value
=
"特勤名称"
)
String
name
;
}
signal-control-service/src/main/resources/mapper/SpecialServiceCrossMapper.xml
View file @
2f8b1844
...
...
@@ -4,20 +4,26 @@
<!-- 通用查询映射结果 -->
<resultMap
type=
"net.wanji.web.po.SpecialServiceCrossPO"
id=
"BaseResultMap"
>
<result
property=
"id"
column=
"id"
/>
<result
property=
"specialServiceId"
column=
"special_service_id"
/>
<result
property=
"crossId"
column=
"cross_id"
/>
<result
property=
"dir"
column=
"dir"
/>
<result
property=
"turn"
column=
"turn"
/>
<result
property=
"sort"
column=
"sort"
/>
<result
property=
"status"
column=
"status"
/>
<result
property=
"gmtCreate"
column=
"gmt_create"
/>
<result
property=
"gmtModified"
column=
"gmt_modified"
/>
<result
property=
"id"
column=
"id"
/>
<result
property=
"specialServiceId"
column=
"special_service_id"
/>
<result
property=
"groupName"
column=
"group_name"
/>
<result
property=
"crossId"
column=
"cross_id"
/>
<result
property=
"inDir"
column=
"in_dir"
/>
<result
property=
"outDir"
column=
"out_dir"
/>
<result
property=
"sort"
column=
"sort"
/>
<result
property=
"status"
column=
"status"
/>
<result
property=
"autoUnlock"
column=
"auto_unlock"
/>
<result
property=
"gmtCreate"
column=
"gmt_create"
/>
<result
property=
"gmtModified"
column=
"gmt_modified"
/>
</resultMap>
<insert
id=
"insertOne"
>
insert into t_special_service_cross(special_service_id,cross_id,dir,sort,status)
values (#{specialServiceId},#{crossId},#{dir},#{sort},#{status})
<sql
id=
"Base_Column_List"
>
id,special_service_id,group_name,cross_id,in_dir,out_dir,sort,status,auto_unlock,gmt_create,gmt_modified
</sql>
<insert
id=
"insertOne"
keyProperty=
"id"
useGeneratedKeys=
"true"
>
insert into t_special_service_cross(special_service_id,cross_id,in_dir,out_dir,sort,status,auto_unlock)
values (#{specialServiceId},#{crossId},#{inDir},#{outDir},#{sort},#{status},#{autoUnlock})
</insert>
<update
id=
"updateTurn"
>
...
...
signal-control-service/src/main/resources/mapper/SpecialServiceMapper.xml
View file @
2f8b1844
...
...
@@ -4,19 +4,26 @@
<!-- 通用查询映射结果 -->
<resultMap
type=
"net.wanji.web.po.SpecialServicePO"
id=
"BaseResultMap"
>
<result
property=
"id"
column=
"id"
/>
<result
property=
"id"
column=
"id"
/>
<result
property=
"name"
column=
"name"
/>
<result
property=
"plateNum"
column=
"plate_num"
/>
<result
property=
"controlModel"
column=
"control_model"
/>
<result
property=
"length"
column=
"length"
/>
<result
property=
"isDel"
column=
"is_del"
/>
<result
property=
"status"
column=
"status"
/>
<result
property=
"startLocation"
column=
"start_location"
/>
<result
property=
"endLocation"
column=
"end_location"
/>
<result
property=
"isDel"
column=
"is_del"
/>
<result
property=
"gmtCreate"
column=
"gmt_create"
/>
<result
property=
"gmtModified"
column=
"gmt_modified"
/>
</resultMap>
<insert
id=
"insertOne"
>
insert into t_special_service_info(name,control_model,length,is_del,status)
values (#{name},#{controlModel},#{length},#{isDel},#{status})
<sql
id=
"Base_Column_List"
>
id,name,plate_num,control_model,length,status,start_location,end_location,is_del,gmt_create,gmt_modified
</sql>
<insert
id=
"insertOne"
keyProperty=
"id"
useGeneratedKeys=
"true"
>
insert into t_special_service_info(name,plate_num,control_model,length,status,start_location,end_location,is_del)
values (#{name},#{plateNum},#{controlModel},#{length},#{status},#{startLocation},#{endLocation},#{isDel})
</insert>
<insert
id=
"insertLength"
>
...
...
wj-databus/src/main/java/net/wanji/databus/dao/mapper/BaseCrossInfoMapper.java
View file @
2f8b1844
...
...
@@ -28,7 +28,7 @@ public interface BaseCrossInfoMapper extends BaseMapper<TBaseCrossInfo> {
BaseCrossInfoPO
selectById
(
String
crossId
);
List
<
BaseCrossInfoPO
>
selectByName
(
String
name
);
BaseCrossInfoPO
selectByName
(
String
name
);
List
<
BaseCrossInfoPO
>
selectAll
();
...
...
wj-databus/src/main/resources/mapper/BaseCrossInfoMapper.xml
View file @
2f8b1844
...
...
@@ -266,4 +266,10 @@
</if>
</where>
</select>
<select
id=
"selectByName"
resultType=
"net.wanji.databus.po.BaseCrossInfoPO"
>
select
<include
refid=
"baseColumn"
/>
from t_base_cross_info
where name = #{name}
</select>
</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