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
c05977bb
Commit
c05977bb
authored
Aug 02, 2023
by
hanbing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[update] 辖区和子区返回坐标由多边形改为线
parent
e66606fc
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
155 additions
and
60 deletions
+155
-60
CustomRidInfoMapper.java
...c/main/java/net/wanji/web/mapper/CustomRidInfoMapper.java
+1
-1
CrossManageServiceImpl.java
...va/net/wanji/web/service/impl/CrossManageServiceImpl.java
+111
-7
SituationDetectionServiceImpl.java
...wanji/web/service/impl/SituationDetectionServiceImpl.java
+17
-45
AreaTreeVO.java
...ol-service/src/main/java/net/wanji/web/vo/AreaTreeVO.java
+3
-1
CustomRidInfoMapper.xml
...service/src/main/resources/mapper/CustomRidInfoMapper.xml
+1
-1
RidInfoMapper.java
...main/java/net/wanji/databus/dao/mapper/RidInfoMapper.java
+2
-0
RidInfoPO.java
wj-databus/src/main/java/net/wanji/databus/po/RidInfoPO.java
+1
-3
AreaInfoVO.java
...atabus/src/main/java/net/wanji/databus/vo/AreaInfoVO.java
+4
-1
OptAreaInfoVO.java
...bus/src/main/java/net/wanji/databus/vo/OptAreaInfoVO.java
+4
-1
RidInfoMapper.xml
wj-databus/src/main/resources/mapper/RidInfoMapper.xml
+11
-0
No files found.
signal-control-service/src/main/java/net/wanji/web/mapper/CustomRidInfoMapper.java
View file @
c05977bb
package
net
.
wanji
.
web
.
mapper
;
package
net
.
wanji
.
web
.
mapper
;
import
com.baomidou.dynamic.datasource.annotation.DS
;
import
com.baomidou.dynamic.datasource.annotation.DS
;
import
net.wanji.
web
.po.RidInfoPO
;
import
net.wanji.
databus
.po.RidInfoPO
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.stereotype.Repository
;
...
...
signal-control-service/src/main/java/net/wanji/web/service/impl/CrossManageServiceImpl.java
View file @
c05977bb
...
@@ -7,6 +7,7 @@ import com.github.pagehelper.PageHelper;
...
@@ -7,6 +7,7 @@ import com.github.pagehelper.PageHelper;
import
com.github.pagehelper.PageInfo
;
import
com.github.pagehelper.PageInfo
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.dto.CrossIdDTO
;
import
net.wanji.common.dto.CrossIdDTO
;
import
net.wanji.common.enums.AreaEnum
;
import
net.wanji.common.enums.ControlModeEnum
;
import
net.wanji.common.enums.ControlModeEnum
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.common.gts.GeometryUtil
;
import
net.wanji.common.gts.GeometryUtil
;
...
@@ -14,9 +15,11 @@ import net.wanji.common.utils.tool.CrossUtil;
...
@@ -14,9 +15,11 @@ import net.wanji.common.utils.tool.CrossUtil;
import
net.wanji.databus.bo.AreaDetailBO
;
import
net.wanji.databus.bo.AreaDetailBO
;
import
net.wanji.databus.bo.AreaIdBO
;
import
net.wanji.databus.bo.AreaIdBO
;
import
net.wanji.databus.dao.entity.CrossSectionPO
;
import
net.wanji.databus.dao.entity.CrossSectionPO
;
import
net.wanji.databus.dao.entity.RidInfoEntity
;
import
net.wanji.databus.dao.mapper.BaseAreaInfoMapper
;
import
net.wanji.databus.dao.mapper.BaseAreaInfoMapper
;
import
net.wanji.databus.dao.mapper.BaseCrossInfoMapper
;
import
net.wanji.databus.dao.mapper.BaseCrossInfoMapper
;
import
net.wanji.databus.dao.mapper.BaseCrossSectionMapper
;
import
net.wanji.databus.dao.mapper.BaseCrossSectionMapper
;
import
net.wanji.databus.dao.mapper.RidInfoMapper
;
import
net.wanji.databus.dto.RunningPlanDTO
;
import
net.wanji.databus.dto.RunningPlanDTO
;
import
net.wanji.databus.po.AreaDetailPOExt
;
import
net.wanji.databus.po.AreaDetailPOExt
;
import
net.wanji.databus.po.BaseAreaInfoPO
;
import
net.wanji.databus.po.BaseAreaInfoPO
;
...
@@ -32,7 +35,10 @@ import net.wanji.web.bo.SpecialServiceRouteBO;
...
@@ -32,7 +35,10 @@ import net.wanji.web.bo.SpecialServiceRouteBO;
import
net.wanji.web.mapper.TBaseAreaCrossMapper
;
import
net.wanji.web.mapper.TBaseAreaCrossMapper
;
import
net.wanji.web.service.CrossManageService
;
import
net.wanji.web.service.CrossManageService
;
import
net.wanji.web.service.scheme.impl.RunningPlanServiceImpl
;
import
net.wanji.web.service.scheme.impl.RunningPlanServiceImpl
;
import
net.wanji.web.vo.*
;
import
net.wanji.web.vo.AreaTreeVO
;
import
net.wanji.web.vo.ControlModeVO
;
import
net.wanji.web.vo.ListAreaVO
;
import
net.wanji.web.vo.SelectCrossesByStartEndVO
;
import
net.wanji.web.vo.specialService.RouteElementVO
;
import
net.wanji.web.vo.specialService.RouteElementVO
;
import
org.locationtech.jts.geom.Geometry
;
import
org.locationtech.jts.geom.Geometry
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
...
@@ -43,6 +49,7 @@ import org.springframework.transaction.annotation.Transactional;
...
@@ -43,6 +49,7 @@ import org.springframework.transaction.annotation.Transactional;
import
java.text.SimpleDateFormat
;
import
java.text.SimpleDateFormat
;
import
java.time.OffsetDateTime
;
import
java.time.OffsetDateTime
;
import
java.util.*
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
/**
* @author Kent HAN
* @author Kent HAN
...
@@ -58,11 +65,12 @@ public class CrossManageServiceImpl implements CrossManageService {
...
@@ -58,11 +65,12 @@ public class CrossManageServiceImpl implements CrossManageService {
private
final
BaseCrossSectionMapper
crossSectionMapper
;
private
final
BaseCrossSectionMapper
crossSectionMapper
;
private
final
RunningPlanServiceImpl
runningPlanServiceImpl
;
private
final
RunningPlanServiceImpl
runningPlanServiceImpl
;
private
final
UtcFeignClients
utcFeignClients
;
private
final
UtcFeignClients
utcFeignClients
;
private
final
RidInfoMapper
ridInfoMapper
;
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
public
CrossManageServiceImpl
(
BaseCrossInfoMapper
crossInfoMapper
,
BaseAreaInfoMapper
baseAreaInfoMapper
,
public
CrossManageServiceImpl
(
BaseCrossInfoMapper
crossInfoMapper
,
BaseAreaInfoMapper
baseAreaInfoMapper
,
SpecialServiceServiceImpl
specialServiceService
,
TBaseAreaCrossMapper
areaCrossMapper
,
BaseCrossSectionMapper
crossSectionMapper
,
RunningPlanServiceImpl
runningPlanServiceImpl
,
@Qualifier
(
"net.wanji.feign.service.UtcFeignClients"
)
UtcFeignClients
utcFeignClients
)
{
SpecialServiceServiceImpl
specialServiceService
,
TBaseAreaCrossMapper
areaCrossMapper
,
BaseCrossSectionMapper
crossSectionMapper
,
RunningPlanServiceImpl
runningPlanServiceImpl
,
@Qualifier
(
"net.wanji.feign.service.UtcFeignClients"
)
UtcFeignClients
utcFeignClients
,
@Qualifier
(
"ridInfoMapper"
)
RidInfoMapper
ridInfoMapper
)
{
this
.
crossInfoMapper
=
crossInfoMapper
;
this
.
crossInfoMapper
=
crossInfoMapper
;
this
.
baseAreaInfoMapper
=
baseAreaInfoMapper
;
this
.
baseAreaInfoMapper
=
baseAreaInfoMapper
;
this
.
specialServiceService
=
specialServiceService
;
this
.
specialServiceService
=
specialServiceService
;
...
@@ -70,6 +78,7 @@ public class CrossManageServiceImpl implements CrossManageService {
...
@@ -70,6 +78,7 @@ public class CrossManageServiceImpl implements CrossManageService {
this
.
crossSectionMapper
=
crossSectionMapper
;
this
.
crossSectionMapper
=
crossSectionMapper
;
this
.
runningPlanServiceImpl
=
runningPlanServiceImpl
;
this
.
runningPlanServiceImpl
=
runningPlanServiceImpl
;
this
.
utcFeignClients
=
utcFeignClients
;
this
.
utcFeignClients
=
utcFeignClients
;
this
.
ridInfoMapper
=
ridInfoMapper
;
}
}
@Override
@Override
...
@@ -110,8 +119,11 @@ public class CrossManageServiceImpl implements CrossManageService {
...
@@ -110,8 +119,11 @@ public class CrossManageServiceImpl implements CrossManageService {
String
wkt
=
addOrUpdateAreaBO
.
getWkt
();
String
wkt
=
addOrUpdateAreaBO
.
getWkt
();
if
(
ObjectUtil
.
isNotEmpty
(
areaId
)
&&
0
!=
areaId
)
{
if
(
ObjectUtil
.
isNotEmpty
(
areaId
)
&&
0
!=
areaId
)
{
// 修改
//
传ID为
修改
// 修改区域基础信息
// 修改区域基础信息
// 根据区域rid计算wkt
List
<
String
>
wktList
=
calcWkt
(
crossIdList
);
wkt
=
wktList
.
toString
();
baseAreaInfoMapper
.
updateAreaNameAndRemark
(
areaName
,
remark
,
areaId
,
roadName
,
parentCode
,
wkt
);
baseAreaInfoMapper
.
updateAreaNameAndRemark
(
areaName
,
remark
,
areaId
,
roadName
,
parentCode
,
wkt
);
// 修改区域关联路口
// 修改区域关联路口
areaCrossMapper
.
deleteByAreaId
(
areaId
);
areaCrossMapper
.
deleteByAreaId
(
areaId
);
...
@@ -122,7 +134,7 @@ public class CrossManageServiceImpl implements CrossManageService {
...
@@ -122,7 +134,7 @@ public class CrossManageServiceImpl implements CrossManageService {
areaIdBO
.
setAreaId
(
areaId
);
areaIdBO
.
setAreaId
(
areaId
);
return
areaIdBO
;
return
areaIdBO
;
}
else
{
}
else
{
// 新增
//
不传ID为
新增
if
(
2
==
type
)
{
// 交警辖区
if
(
2
==
type
)
{
// 交警辖区
BaseAreaInfoPO
baseAreaInfoPO
=
new
BaseAreaInfoPO
();
BaseAreaInfoPO
baseAreaInfoPO
=
new
BaseAreaInfoPO
();
if
(
parentCode
!=
null
)
{
if
(
parentCode
!=
null
)
{
...
@@ -131,6 +143,9 @@ public class CrossManageServiceImpl implements CrossManageService {
...
@@ -131,6 +143,9 @@ public class CrossManageServiceImpl implements CrossManageService {
baseAreaInfoPO
.
setParentCode
(
0
);
baseAreaInfoPO
.
setParentCode
(
0
);
}
}
baseAreaInfoPO
.
setRoadName
(
""
);
baseAreaInfoPO
.
setRoadName
(
""
);
// 根据区域rid计算wkt
List
<
String
>
wktList
=
calcWkt
(
crossIdList
);
wkt
=
wktList
.
toString
();
AreaIdBO
areaIdBO
=
handleAreaInfoPO
(
type
,
areaName
,
remark
,
crossIdList
,
wkt
,
baseAreaInfoPO
);
AreaIdBO
areaIdBO
=
handleAreaInfoPO
(
type
,
areaName
,
remark
,
crossIdList
,
wkt
,
baseAreaInfoPO
);
return
areaIdBO
;
return
areaIdBO
;
}
else
if
(
6
==
type
)
{
// 道路
}
else
if
(
6
==
type
)
{
// 道路
...
@@ -143,6 +158,9 @@ public class CrossManageServiceImpl implements CrossManageService {
...
@@ -143,6 +158,9 @@ public class CrossManageServiceImpl implements CrossManageService {
BaseAreaInfoPO
baseAreaInfoPO
=
new
BaseAreaInfoPO
();
BaseAreaInfoPO
baseAreaInfoPO
=
new
BaseAreaInfoPO
();
baseAreaInfoPO
.
setRoadName
(
""
);
baseAreaInfoPO
.
setRoadName
(
""
);
baseAreaInfoPO
.
setParentCode
(
0
);
baseAreaInfoPO
.
setParentCode
(
0
);
// 根据区域rid计算wkt
List
<
String
>
wktList
=
calcWkt
(
crossIdList
);
wkt
=
wktList
.
toString
();
AreaIdBO
areaIdBO
=
handleAreaInfoPO
(
type
,
areaName
,
remark
,
crossIdList
,
wkt
,
baseAreaInfoPO
);
AreaIdBO
areaIdBO
=
handleAreaInfoPO
(
type
,
areaName
,
remark
,
crossIdList
,
wkt
,
baseAreaInfoPO
);
return
areaIdBO
;
return
areaIdBO
;
}
}
...
@@ -150,6 +168,65 @@ public class CrossManageServiceImpl implements CrossManageService {
...
@@ -150,6 +168,65 @@ public class CrossManageServiceImpl implements CrossManageService {
return
null
;
return
null
;
}
}
private
List
<
String
>
calcWkt
(
List
<
String
>
crossIdList
)
{
List
<
String
>
res
=
new
ArrayList
<>();
List
<
RidInfoEntity
>
ridInfoPOList
=
ridInfoMapper
.
selectByCrossList
(
crossIdList
);
if
(
ridInfoPOList
==
null
)
{
throw
new
RuntimeException
(
"路网数据未包含区域内所有路口"
);
}
// 去除多边形范围外的路段
List
<
RidInfoEntity
>
firstFilterRids
=
ridInfoPOList
.
stream
()
.
filter
(
rid
->
validRid
(
rid
,
crossIdList
))
.
collect
(
Collectors
.
toList
());
// 双向路段只保留一条RID
Iterator
<
RidInfoEntity
>
iterator
=
firstFilterRids
.
iterator
();
while
(
iterator
.
hasNext
())
{
RidInfoEntity
next
=
iterator
.
next
();
if
(
hasDuplicate
(
next
,
firstFilterRids
))
{
iterator
.
remove
();
}
}
// 验证路口数量
Set
<
String
>
ridCrossIds
=
new
HashSet
<>();
for
(
RidInfoEntity
firstFilterRid
:
firstFilterRids
)
{
String
startCrossId
=
firstFilterRid
.
getStartCrossId
();
String
endCrossId
=
firstFilterRid
.
getEndCrossId
();
ridCrossIds
.
add
(
startCrossId
);
ridCrossIds
.
add
(
endCrossId
);
}
if
(
ridCrossIds
.
size
()
!=
crossIdList
.
size
())
{
throw
new
RuntimeException
(
"路网数据未包含区域内所有路口"
);
}
for
(
RidInfoEntity
firstFilterRid
:
firstFilterRids
)
{
String
wkt
=
firstFilterRid
.
getWkt
();
res
.
add
(
wkt
);
}
return
res
;
}
private
boolean
hasDuplicate
(
RidInfoEntity
rid
,
List
<
RidInfoEntity
>
firstFilterRids
)
{
String
startCrossId
=
rid
.
getStartCrossId
();
String
endCrossId
=
rid
.
getEndCrossId
();
for
(
RidInfoEntity
firstFilterRid
:
firstFilterRids
)
{
String
startCrossId2
=
firstFilterRid
.
getStartCrossId
();
String
endCrossId2
=
firstFilterRid
.
getEndCrossId
();
// 如果开始路口和结束路口对应另一个rid的结束路口和开始路口,则剔除
if
(
Objects
.
equals
(
startCrossId
,
endCrossId2
)
&&
Objects
.
equals
(
endCrossId
,
startCrossId2
))
{
return
true
;
}
}
return
false
;
}
private
boolean
validRid
(
RidInfoEntity
rid
,
List
<
String
>
crossIdList
)
{
String
startCrossId
=
rid
.
getStartCrossId
();
String
endCrossId
=
rid
.
getEndCrossId
();
return
crossIdList
.
contains
(
startCrossId
)
&&
crossIdList
.
contains
(
endCrossId
);
}
private
AreaIdBO
handleAreaInfoPO
(
Integer
type
,
String
areaName
,
String
remark
,
List
<
String
>
crossIdList
,
String
wkt
,
private
AreaIdBO
handleAreaInfoPO
(
Integer
type
,
String
areaName
,
String
remark
,
List
<
String
>
crossIdList
,
String
wkt
,
BaseAreaInfoPO
baseAreaInfoPO
)
{
BaseAreaInfoPO
baseAreaInfoPO
)
{
baseAreaInfoPO
.
setCode
(
0
);
baseAreaInfoPO
.
setCode
(
0
);
...
@@ -385,11 +462,24 @@ public class CrossManageServiceImpl implements CrossManageService {
...
@@ -385,11 +462,24 @@ public class CrossManageServiceImpl implements CrossManageService {
// 查询区域路口ID
// 查询区域路口ID
areaInfoVO
.
setCrossIdAndNameList
(
buildCrossIdAndNameList
(
areaId
));
areaInfoVO
.
setCrossIdAndNameList
(
buildCrossIdAndNameList
(
areaId
));
areaInfoVO
.
setWkt
(
baseAreaInfoPO
.
getPolylines
());
String
polylines
=
baseAreaInfoPO
.
getPolylines
();
// 如果是道路,直接返回线
if
(
Objects
.
equals
(
AreaEnum
.
ROAD
.
getCode
(),
baseAreaInfoPO
.
getType
()))
{
areaInfoVO
.
setWkt
(
polylines
);
}
else
{
List
<
String
>
wktList
=
buildWktList
(
polylines
);
areaInfoVO
.
setWktList
(
wktList
);
}
return
areaInfoVO
;
return
areaInfoVO
;
}
}
private
List
<
String
>
buildWktList
(
String
polylines
)
{
String
[]
strArray
=
polylines
.
substring
(
1
,
polylines
.
length
()
-
1
).
split
(
", "
);
return
Arrays
.
asList
(
strArray
);
}
private
List
<
CrossIdAndNameVO
>
buildCrossIdAndNameList
(
Integer
areaId
)
{
private
List
<
CrossIdAndNameVO
>
buildCrossIdAndNameList
(
Integer
areaId
)
{
List
<
CrossIdAndNameVO
>
res
=
new
ArrayList
<>();
List
<
CrossIdAndNameVO
>
res
=
new
ArrayList
<>();
...
@@ -512,7 +602,14 @@ public class CrossManageServiceImpl implements CrossManageService {
...
@@ -512,7 +602,14 @@ public class CrossManageServiceImpl implements CrossManageService {
areaTreeVO
.
setId
(
areaId
.
toString
());
areaTreeVO
.
setId
(
areaId
.
toString
());
areaTreeVO
.
setName
(
baseAreaInfoPO
.
getName
());
areaTreeVO
.
setName
(
baseAreaInfoPO
.
getName
());
areaTreeVO
.
setType
(
"1"
);
areaTreeVO
.
setType
(
"1"
);
areaTreeVO
.
setPolylines
(
baseAreaInfoPO
.
getPolylines
());
String
polylines
=
baseAreaInfoPO
.
getPolylines
();
// 如果是道路,直接返回线
if
(
Objects
.
equals
(
AreaEnum
.
ROAD
.
getCode
(),
baseAreaInfoPO
.
getType
()))
{
areaTreeVO
.
setPolylines
(
polylines
);
}
else
{
List
<
String
>
wktList
=
buildWktList
(
polylines
);
areaTreeVO
.
setWktList
(
wktList
);
}
areaTreeVO
.
setPoint
(
""
);
areaTreeVO
.
setPoint
(
""
);
areaTreeVO
.
setChildren
(
buildCrossList
(
areaId
));
areaTreeVO
.
setChildren
(
buildCrossList
(
areaId
));
res
.
add
(
areaTreeVO
);
res
.
add
(
areaTreeVO
);
...
@@ -532,7 +629,14 @@ public class CrossManageServiceImpl implements CrossManageService {
...
@@ -532,7 +629,14 @@ public class CrossManageServiceImpl implements CrossManageService {
areaTreeVO
.
setId
(
areaId
.
toString
());
areaTreeVO
.
setId
(
areaId
.
toString
());
areaTreeVO
.
setName
(
baseAreaInfoPO
.
getName
());
areaTreeVO
.
setName
(
baseAreaInfoPO
.
getName
());
areaTreeVO
.
setType
(
"1"
);
areaTreeVO
.
setType
(
"1"
);
areaTreeVO
.
setPolylines
(
baseAreaInfoPO
.
getPolylines
());
String
polylines
=
baseAreaInfoPO
.
getPolylines
();
// 如果是道路,直接返回线
if
(
Objects
.
equals
(
AreaEnum
.
ROAD
.
getCode
(),
baseAreaInfoPO
.
getType
()))
{
areaTreeVO
.
setPolylines
(
polylines
);
}
else
{
List
<
String
>
wktList
=
buildWktList
(
polylines
);
areaTreeVO
.
setWktList
(
wktList
);
}
areaTreeVO
.
setPoint
(
""
);
areaTreeVO
.
setPoint
(
""
);
areaTreeVO
.
setChildren
(
buildSubPoliceList
(
areaId
));
areaTreeVO
.
setChildren
(
buildSubPoliceList
(
areaId
));
...
...
signal-control-service/src/main/java/net/wanji/web/service/impl/SituationDetectionServiceImpl.java
View file @
c05977bb
...
@@ -32,56 +32,17 @@ import net.wanji.web.entity.TBaseAreaCross;
...
@@ -32,56 +32,17 @@ import net.wanji.web.entity.TBaseAreaCross;
import
net.wanji.web.entity.TBaseAreaInfo
;
import
net.wanji.web.entity.TBaseAreaInfo
;
import
net.wanji.web.entity.TCrossControlHist
;
import
net.wanji.web.entity.TCrossControlHist
;
import
net.wanji.web.entity.TDeviceStatusInfo
;
import
net.wanji.web.entity.TDeviceStatusInfo
;
import
net.wanji.web.mapper.AllDeviceStatusMapper
;
import
net.wanji.web.mapper.*
;
import
net.wanji.web.mapper.ControlHistMapper
;
import
net.wanji.web.po.*
;
import
net.wanji.web.mapper.CrossAlarmMapper
;
import
net.wanji.web.mapper.EventAlarmMapper
;
import
net.wanji.web.mapper.GreenwaveRealtimeMapperOld
;
import
net.wanji.web.mapper.OptRecordsMapper
;
import
net.wanji.web.mapper.TBaseAreaCrossMapper
;
import
net.wanji.web.mapper.TBaseAreaInfoMapper
;
import
net.wanji.web.mapper.TDeviceStatusLogMapper
;
import
net.wanji.web.mapper.VehicleTraceMapper
;
import
net.wanji.web.mapper.VideoDeviceInfoMapper
;
import
net.wanji.web.po.BaseAreaDataPO
;
import
net.wanji.web.po.ControlHistPO
;
import
net.wanji.web.po.CrossAlarmPO
;
import
net.wanji.web.po.EventAlarmPO
;
import
net.wanji.web.po.GreenwaveRealtimePO
;
import
net.wanji.web.po.VehicleTracePO
;
import
net.wanji.web.po.VideoDeviceInfoPO
;
import
net.wanji.web.service.SituationDetectionService
;
import
net.wanji.web.service.SituationDetectionService
;
import
net.wanji.web.vo.situationDetection.AreaListVO
;
import
net.wanji.web.vo.situationDetection.*
;
import
net.wanji.web.vo.situationDetection.ControlHistOutVO
;
import
net.wanji.web.vo.situationDetection.CrossAlarmOutVO
;
import
net.wanji.web.vo.situationDetection.DeviceFaultCountVO
;
import
net.wanji.web.vo.situationDetection.EventAlarmOutVO
;
import
net.wanji.web.vo.situationDetection.GreenwaveRealtimeOutVO
;
import
net.wanji.web.vo.situationDetection.JurisdictionAreaTreeVO
;
import
net.wanji.web.vo.situationDetection.OptRecordsOutVO
;
import
net.wanji.web.vo.situationDetection.SignalFaultInfoVO
;
import
net.wanji.web.vo.situationDetection.SignalManufacturerCountInfoVO
;
import
net.wanji.web.vo.situationDetection.SignalOperationModeCountVO
;
import
net.wanji.web.vo.situationDetection.SignalOperationModeVO
;
import
net.wanji.web.vo.situationDetection.VehicleTraceOutVO
;
import
net.wanji.web.vo.situationDetection.VideoDeviceInfoOutVO
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.CollectionUtils
;
import
java.text.ParseException
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.*
;
import
java.util.Arrays
;
import
java.util.Comparator
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
/**
/**
...
@@ -766,13 +727,24 @@ public class SituationDetectionServiceImpl implements SituationDetectionService
...
@@ -766,13 +727,24 @@ public class SituationDetectionServiceImpl implements SituationDetectionService
optAreaInfoVO
.
setAreaId
(
areaId
);
optAreaInfoVO
.
setAreaId
(
areaId
);
optAreaInfoVO
.
setAreaName
(
baseAreaInfoPO
.
getName
());
optAreaInfoVO
.
setAreaName
(
baseAreaInfoPO
.
getName
());
optAreaInfoVO
.
setCrossInfos
(
buildCrossIdAndNameList
(
areaId
));
optAreaInfoVO
.
setCrossInfos
(
buildCrossIdAndNameList
(
areaId
));
optAreaInfoVO
.
setPloyLines
(
baseAreaInfoPO
.
getPolylines
());
String
polylines
=
baseAreaInfoPO
.
getPolylines
();
// 如果是道路,直接返回线
if
(
Objects
.
equals
(
AreaEnum
.
ROAD
.
getCode
(),
baseAreaInfoPO
.
getType
()))
{
optAreaInfoVO
.
setPloyLines
(
polylines
);
}
else
{
List
<
String
>
wktList
=
buildWktList
(
polylines
);
optAreaInfoVO
.
setWktList
(
wktList
);
}
res
.
add
(
optAreaInfoVO
);
res
.
add
(
optAreaInfoVO
);
}
}
return
res
;
return
res
;
}
}
private
List
<
String
>
buildWktList
(
String
polylines
)
{
String
[]
strArray
=
polylines
.
substring
(
1
,
polylines
.
length
()
-
1
).
split
(
", "
);
return
Arrays
.
asList
(
strArray
);
}
private
List
<
OptCrossIdAndNameVO
>
buildCrossIdAndNameList
(
Integer
areaId
)
{
private
List
<
OptCrossIdAndNameVO
>
buildCrossIdAndNameList
(
Integer
areaId
)
{
List
<
OptCrossIdAndNameVO
>
res
=
new
ArrayList
<>();
List
<
OptCrossIdAndNameVO
>
res
=
new
ArrayList
<>();
...
...
signal-control-service/src/main/java/net/wanji/web/vo/AreaTreeVO.java
View file @
c05977bb
...
@@ -15,8 +15,10 @@ public class AreaTreeVO {
...
@@ -15,8 +15,10 @@ public class AreaTreeVO {
private
String
name
;
private
String
name
;
@ApiModelProperty
(
value
=
"类型:1-区域;2-路口"
)
@ApiModelProperty
(
value
=
"类型:1-区域;2-路口"
)
private
String
type
;
private
String
type
;
@ApiModelProperty
(
value
=
"
区域边界
"
)
@ApiModelProperty
(
value
=
"
道路区域坐标
"
)
private
String
polylines
;
private
String
polylines
;
@ApiModelProperty
(
value
=
"其他区域坐标"
)
private
List
<
String
>
wktList
;
@ApiModelProperty
(
value
=
"路口经纬度"
)
@ApiModelProperty
(
value
=
"路口经纬度"
)
private
String
point
;
private
String
point
;
@ApiModelProperty
(
value
=
"子辖区"
)
@ApiModelProperty
(
value
=
"子辖区"
)
...
...
signal-control-service/src/main/resources/mapper/CustomRidInfoMapper.xml
View file @
c05977bb
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
<mapper
namespace=
"net.wanji.web.mapper.CustomRidInfoMapper"
>
<mapper
namespace=
"net.wanji.web.mapper.CustomRidInfoMapper"
>
<!-- 通用查询映射结果 -->
<!-- 通用查询映射结果 -->
<resultMap
type=
"net.wanji.
web
.po.RidInfoPO"
id=
"BaseResultMap"
>
<resultMap
type=
"net.wanji.
databus
.po.RidInfoPO"
id=
"BaseResultMap"
>
<result
property=
"rid"
column=
"rid"
/>
<result
property=
"rid"
column=
"rid"
/>
<result
property=
"name"
column=
"name"
/>
<result
property=
"name"
column=
"name"
/>
<result
property=
"roadId"
column=
"road_id"
/>
<result
property=
"roadId"
column=
"road_id"
/>
...
...
wj-databus/src/main/java/net/wanji/databus/dao/mapper/RidInfoMapper.java
View file @
c05977bb
...
@@ -39,4 +39,6 @@ public interface RidInfoMapper {
...
@@ -39,4 +39,6 @@ public interface RidInfoMapper {
List
<
RidInfoEntity
>
selectByEndCross
(
String
crossId
);
List
<
RidInfoEntity
>
selectByEndCross
(
String
crossId
);
List
<
RidInfoEntity
>
selectByStartCross
(
String
crossId
);
List
<
RidInfoEntity
>
selectByStartCross
(
String
crossId
);
List
<
RidInfoEntity
>
selectByCrossList
(
List
<
String
>
crossIdList
);
}
}
signal-control-service/src/main/java/net/wanji/web
/po/RidInfoPO.java
→
wj-databus/src/main/java/net/wanji/databus
/po/RidInfoPO.java
View file @
c05977bb
package
net
.
wanji
.
web
.
po
;
package
net
.
wanji
.
databus
.
po
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.Data
;
import
org.springframework.data.annotation.Id
;
import
java.util.Date
;
import
java.util.Date
;
...
@@ -13,7 +12,6 @@ import java.util.Date;
...
@@ -13,7 +12,6 @@ import java.util.Date;
@Data
@Data
public
class
RidInfoPO
{
public
class
RidInfoPO
{
/** 路段编号(开始路口编号+结束路口编号+顺序号0) */
/** 路段编号(开始路口编号+结束路口编号+顺序号0) */
@Id
@ApiModelProperty
(
name
=
"路段编号(开始路口编号+结束路口编号+顺序号0)"
,
notes
=
""
)
@ApiModelProperty
(
name
=
"路段编号(开始路口编号+结束路口编号+顺序号0)"
,
notes
=
""
)
private
String
rid
=
""
;
private
String
rid
=
""
;
/** 路段名称 */
/** 路段名称 */
...
...
wj-databus/src/main/java/net/wanji/databus/vo/AreaInfoVO.java
View file @
c05977bb
...
@@ -38,7 +38,10 @@ public class AreaInfoVO {
...
@@ -38,7 +38,10 @@ public class AreaInfoVO {
@ApiModelProperty
(
value
=
"路口数组"
,
required
=
true
)
@ApiModelProperty
(
value
=
"路口数组"
,
required
=
true
)
private
List
<
CrossIdAndNameVO
>
crossIdAndNameList
;
private
List
<
CrossIdAndNameVO
>
crossIdAndNameList
;
@ApiModelProperty
(
value
=
"坐标"
)
@ApiModelProperty
(
value
=
"
道路区域
坐标"
)
private
String
wkt
;
private
String
wkt
;
@ApiModelProperty
(
value
=
"其他区域坐标"
)
private
List
<
String
>
wktList
;
}
}
wj-databus/src/main/java/net/wanji/databus/vo/OptAreaInfoVO.java
View file @
c05977bb
...
@@ -22,7 +22,10 @@ public class OptAreaInfoVO {
...
@@ -22,7 +22,10 @@ public class OptAreaInfoVO {
@ApiModelProperty
(
value
=
"路口数组"
,
required
=
true
)
@ApiModelProperty
(
value
=
"路口数组"
,
required
=
true
)
private
List
<
OptCrossIdAndNameVO
>
crossInfos
;
private
List
<
OptCrossIdAndNameVO
>
crossInfos
;
@ApiModelProperty
(
value
=
"
坐标
"
)
@ApiModelProperty
(
value
=
"
道路区域坐标线
"
)
private
String
ployLines
;
private
String
ployLines
;
@ApiModelProperty
(
value
=
"其他区域坐标线"
)
private
List
<
String
>
wktList
;
}
}
wj-databus/src/main/resources/mapper/RidInfoMapper.xml
View file @
c05977bb
...
@@ -117,4 +117,15 @@
...
@@ -117,4 +117,15 @@
from t_base_rid_info
from t_base_rid_info
where start_cross_id = #{finalCrossId}
where start_cross_id = #{finalCrossId}
</select>
</select>
<select
id=
"selectByCrossList"
resultType=
"net.wanji.databus.dao.entity.RidInfoEntity"
>
select
<include
refid=
"Base_Column_List"
/>
from t_base_rid_info
where
(start_cross_id in
<foreach
collection=
"crossIdList"
item=
"id"
separator=
","
open=
"("
close=
")"
>
#{id}
</foreach>
)
or
(end_cross_id in
<foreach
collection=
"crossIdList"
item=
"id"
separator=
","
open=
"("
close=
")"
>
#{id}
</foreach>
)
</select>
</mapper>
</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