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
70c81cea
Commit
70c81cea
authored
Jan 08, 2025
by
zhoushiguang
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://106.120.201.126:14725/signal/traffic-signal-platform
parents
7b89ffc9
32e29485
Changes
30
Show whitespace changes
Inline
Side-by-side
Showing
30 changed files
with
688 additions
and
67 deletions
+688
-67
PlanSendController.java
...ain/java/net/wanji/web/controller/PlanSendController.java
+13
-0
PlanSendService.java
.../src/main/java/net/wanji/web/service/PlanSendService.java
+1
-0
PlanSendServiceImpl.java
.../java/net/wanji/web/service/impl/PlanSendServiceImpl.java
+134
-8
SchemeConfigServiceImpl.java
...anji/web/service/scheme/impl/SchemeConfigServiceImpl.java
+39
-0
FeignCommon.java
...main/java/net/wanji/feign/service/common/FeignCommon.java
+4
-0
EventInfoTypeEnum.java
...in/java/net/wanji/opt/common/enums/EventInfoTypeEnum.java
+40
-0
InduceSendController.java
...net/wanji/opt/controller/induce/InduceSendController.java
+8
-6
CrossIndexController.java
.../wanji/opt/controller/signalopt/CrossIndexController.java
+22
-4
HoloEventInfoPO.java
...src/main/java/net/wanji/opt/po/trend/HoloEventInfoPO.java
+17
-0
CrossIndexService.java
...rc/main/java/net/wanji/opt/service/CrossIndexService.java
+4
-2
CrossIndexServiceImpl.java
...ava/net/wanji/opt/service/impl/CrossIndexServiceImpl.java
+63
-24
StrategyGreenBeltController.java
...opt/synthesis/controller/StrategyGreenBeltController.java
+12
-0
StrategyGreenBeltService.java
...wanji/opt/synthesis/service/StrategyGreenBeltService.java
+1
-0
StrategyGreenBeltServiceImpl.java
.../synthesis/service/impl/StrategyGreenBeltServiceImpl.java
+48
-0
CrossStatusCountVO.java
...ce/src/main/java/net/wanji/opt/vo/CrossStatusCountVO.java
+33
-0
crossStatusCountVO.java
...ce/src/main/java/net/wanji/opt/vo/crossStatusCountVO.java
+0
-15
ScheduledConfig.java
...e/src/main/java/net/wanji/utc/config/ScheduledConfig.java
+29
-0
StaticInfoController.java
...n/java/net/wanji/utc/controller/StaticInfoController.java
+9
-0
StaticInfoService.java
...a/net/wanji/utc/service/staticinfo/StaticInfoService.java
+1
-0
WanJiCommonStaticInfoService.java
.../utc/service/staticinfo/WanJiCommonStaticInfoService.java
+3
-0
StaticInfoServiceImpl.java
...ji/utc/service/staticinfo/impl/StaticInfoServiceImpl.java
+7
-0
WanJiCommonStaticInfoServiceImpl.java
...ice/staticinfo/impl/WanJiCommonStaticInfoServiceImpl.java
+16
-4
SchemeUpdateTask.java
...ce/src/main/java/net/wanji/utc/task/SchemeUpdateTask.java
+65
-0
CrossSchemeStageOptLogMapper.java
...anji/databus/dao/mapper/CrossSchemeStageOptLogMapper.java
+20
-0
CrossSchemeQueryDTO.java
.../main/java/net/wanji/databus/dto/CrossSchemeQueryDTO.java
+38
-0
CrossDataRealtimePO.java
...c/main/java/net/wanji/databus/po/CrossDataRealtimePO.java
+7
-0
SchemeOptLogPO.java
...us/src/main/java/net/wanji/databus/po/SchemeOptLogPO.java
+24
-0
CrossDataHistMapper.xml
wj-databus/src/main/resources/mapper/CrossDataHistMapper.xml
+6
-2
CrossDataRealtimeMapper.xml
...bus/src/main/resources/mapper/CrossDataRealtimeMapper.xml
+6
-2
CrossSchemeStageOptLogMapper.xml
...rc/main/resources/mapper/CrossSchemeStageOptLogMapper.xml
+18
-0
No files found.
signal-control-service/src/main/java/net/wanji/web/controller/PlanSendController.java
View file @
70c81cea
...
@@ -147,6 +147,19 @@ public class PlanSendController {
...
@@ -147,6 +147,19 @@ public class PlanSendController {
return
jsonViewObject
.
success
(
ringPhasePO
);
return
jsonViewObject
.
success
(
ringPhasePO
);
}
}
@AspectLog
(
description
=
"根据路口号和时间(据当前时间半小时)返回相位列表-方案优化对比"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"根据路口号和时间(据当前时间半小时)返回相位列表-方案优化对比)"
,
notes
=
"根据路口号和时间(据当前时间半小时)返回相位列表-方案优化对比"
)
@PostMapping
(
"/phaseListByTimeRingNew"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
SaveSchemeConfigDTO
.
PhaseListElement
.
class
),
})
public
JsonViewObject
phaseListByTimeRingNew
(
@RequestBody
CrossIdAndTimeDTO
crossIdAndTimeDTO
)
{
RingPhasePO
ringPhasePO
=
planSendService
.
phaseListByTimeRingNew
(
crossIdAndTimeDTO
);
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
return
jsonViewObject
.
success
(
ringPhasePO
);
}
@AspectLog
(
description
=
"下发数据到UTC"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@AspectLog
(
description
=
"下发数据到UTC"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"下发数据到UTC"
,
notes
=
"下发数据到UTC"
)
@ApiOperation
(
value
=
"下发数据到UTC"
,
notes
=
"下发数据到UTC"
)
@PostMapping
(
"/saveToUtc"
)
@PostMapping
(
"/saveToUtc"
)
...
...
signal-control-service/src/main/java/net/wanji/web/service/PlanSendService.java
View file @
70c81cea
...
@@ -33,6 +33,7 @@ public interface PlanSendService {
...
@@ -33,6 +33,7 @@ public interface PlanSendService {
// RingPhasePO phaseListByTimeSingleRing(CrossIdAndTimeDTO crossIdAndTimeDTO);
// RingPhasePO phaseListByTimeSingleRing(CrossIdAndTimeDTO crossIdAndTimeDTO);
RingPhasePO
phaseListByTimeSingleRingNew
(
CrossIdAndTimeDTO
crossIdAndTimeDTO
);
RingPhasePO
phaseListByTimeSingleRingNew
(
CrossIdAndTimeDTO
crossIdAndTimeDTO
);
RingPhasePO
phaseListByTimeRingNew
(
CrossIdAndTimeDTO
crossIdAndTimeDTO
);
List
<
SaveSchemeConfigDTO
.
PhaseListElement
>
phaseListByTimeSingleRing
(
CrossIdAndTimeDTO
crossIdAndTimeDTO
);
List
<
SaveSchemeConfigDTO
.
PhaseListElement
>
phaseListByTimeSingleRing
(
CrossIdAndTimeDTO
crossIdAndTimeDTO
);
/**
/**
...
...
signal-control-service/src/main/java/net/wanji/web/service/impl/PlanSendServiceImpl.java
View file @
70c81cea
...
@@ -15,10 +15,7 @@ import net.wanji.databus.bo.CrossIdBO;
...
@@ -15,10 +15,7 @@ import net.wanji.databus.bo.CrossIdBO;
import
net.wanji.databus.dao.entity.*
;
import
net.wanji.databus.dao.entity.*
;
import
net.wanji.databus.dao.mapper.*
;
import
net.wanji.databus.dao.mapper.*
;
import
net.wanji.databus.dto.*
;
import
net.wanji.databus.dto.*
;
import
net.wanji.databus.po.BaseCrossLightsPO
;
import
net.wanji.databus.po.*
;
import
net.wanji.databus.po.CrossBaseLaneInfoPO
;
import
net.wanji.databus.po.CrossLaneLightsPO
;
import
net.wanji.databus.po.SaveToUtcPO
;
import
net.wanji.databus.vo.*
;
import
net.wanji.databus.vo.*
;
import
net.wanji.feign.service.UtcFeignClients
;
import
net.wanji.feign.service.UtcFeignClients
;
import
net.wanji.web.common.enums.CrossDirChangeEnum
;
import
net.wanji.web.common.enums.CrossDirChangeEnum
;
...
@@ -41,7 +38,6 @@ import javax.validation.constraints.NotNull;
...
@@ -41,7 +38,6 @@ import javax.validation.constraints.NotNull;
import
java.text.SimpleDateFormat
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
/**
/**
* @author Kent HAN
* @author Kent HAN
...
@@ -728,15 +724,19 @@ public class PlanSendServiceImpl implements PlanSendService {
...
@@ -728,15 +724,19 @@ public class PlanSendServiceImpl implements PlanSendService {
if
(
schemeId
==
85
){
if
(
schemeId
==
85
){
return
ringPhasePO
;
return
ringPhasePO
;
}
}
CrossIdBO
crossIdBO
=
new
CrossIdBO
();
/*
CrossIdBO crossIdBO = new CrossIdBO();
crossIdBO.setCrossId(crossIdAndTimeDTO.getCrossId());
crossIdBO.setCrossId(crossIdAndTimeDTO.getCrossId());
SaveSchemeConfigDTO saveSchemeConfigDTO = schemeConfigServiceImpl.listSchemeConfig(crossIdBO);
SaveSchemeConfigDTO saveSchemeConfigDTO = schemeConfigServiceImpl.listSchemeConfig(crossIdBO);
List<SaveSchemeConfigDTO.PhaseScheme> phaseSchemeList = saveSchemeConfigDTO.getPhaseSchemeList();
List<SaveSchemeConfigDTO.PhaseScheme> phaseSchemeList = saveSchemeConfigDTO.getPhaseSchemeList();
*/
List
<
SaveSchemeConfigDTO
.
PhaseScheme
>
phaseSchemeList
=
schemeConfigServiceImpl
.
buildPhaseSchemeListByCrossIdAndSchemeNo
(
crossIdAndTimeDTO
.
getCrossId
(),
String
.
valueOf
(
schemeId
));
if
(
ObjectUtil
.
isEmpty
(
phaseSchemeList
)){
if
(
ObjectUtil
.
isEmpty
(
phaseSchemeList
)){
return
ringPhasePO
;
return
ringPhasePO
;
}
}
List
<
SaveSchemeConfigDTO
.
PhaseScheme
>
collected
=
phaseSchemeList
.
stream
().
filter
(
x
->
x
.
getSchemeNo
().
equals
(
content
.
getSchemeNo
())).
collect
(
Collectors
.
toList
());
/*List<SaveSchemeConfigDTO.PhaseScheme> collected = phaseSchemeList.stream().filter(x -> x.getSchemeNo().equals(content.getSchemeNo())).collect(Collectors.toList());
SaveSchemeConfigDTO
.
PhaseScheme
phaseScheme
=
collected
.
get
(
0
);
SaveSchemeConfigDTO.PhaseScheme phaseScheme = collected.get(0);*/
SaveSchemeConfigDTO
.
PhaseScheme
phaseScheme
=
phaseSchemeList
.
get
(
0
);
SaveSchemeConfigDTO
.
RingListElement
ringListElement
=
phaseScheme
.
getRingList
().
get
(
0
);
SaveSchemeConfigDTO
.
RingListElement
ringListElement
=
phaseScheme
.
getRingList
().
get
(
0
);
List
<
SaveSchemeConfigDTO
.
GroupListElement
>
groupList
=
ringListElement
.
getGroupList
();
List
<
SaveSchemeConfigDTO
.
GroupListElement
>
groupList
=
ringListElement
.
getGroupList
();
SaveSchemeConfigDTO
.
GroupListElement
groupListElement
=
groupList
.
get
(
0
);
SaveSchemeConfigDTO
.
GroupListElement
groupListElement
=
groupList
.
get
(
0
);
...
@@ -796,6 +796,132 @@ public class PlanSendServiceImpl implements PlanSendService {
...
@@ -796,6 +796,132 @@ public class PlanSendServiceImpl implements PlanSendService {
return
ringPhasePO
;
return
ringPhasePO
;
}
}
@Override
public
RingPhasePO
phaseListByTimeRingNew
(
CrossIdAndTimeDTO
crossIdAndTimeDTO
)
{
RingPhasePO
ringPhasePO
=
new
RingPhasePO
();
List
<
SaveSchemeConfigDTO
.
PhaseListElement
>
oriPhaseList
=
new
ArrayList
<>();
List
<
SaveSchemeConfigDTO
.
PhaseListElement
>
optPhaseList
=
new
ArrayList
<>();
QueryByCrossIdAndTimeDTO
queryByCrossIdAndTimeDTO
=
new
QueryByCrossIdAndTimeDTO
();
queryByCrossIdAndTimeDTO
.
setCrossId
(
crossIdAndTimeDTO
.
getCrossId
());
queryByCrossIdAndTimeDTO
.
setDatetime
(
crossIdAndTimeDTO
.
getDatetime
());
JsonViewObject
jsonViewObject
=
utcFeignClients
.
selectSchemeByParams
(
queryByCrossIdAndTimeDTO
);
if
(
jsonViewObject
.
getCode
()
!=
200
){
return
ringPhasePO
;
}
ObjectMapper
objectMapper
=
JacksonUtils
.
getInstance
();
BaseCrossSchemePO
content
=
objectMapper
.
convertValue
(
jsonViewObject
.
getContent
(),
BaseCrossSchemePO
.
class
);
if
(
ObjectUtil
.
isEmpty
(
content
)){
return
ringPhasePO
;
}
int
schemeId
=
Integer
.
valueOf
(
content
.
getSchemeNo
());
//黃闪
if
(
schemeId
==
85
){
return
ringPhasePO
;
}
List
<
SaveSchemeConfigDTO
.
PhaseScheme
>
phaseSchemeList
=
schemeConfigServiceImpl
.
buildPhaseSchemeListByCrossIdAndSchemeNo
(
crossIdAndTimeDTO
.
getCrossId
(),
String
.
valueOf
(
schemeId
));
if
(
ObjectUtil
.
isEmpty
(
phaseSchemeList
)){
return
ringPhasePO
;
}
SaveSchemeConfigDTO
.
PhaseScheme
phaseScheme
=
phaseSchemeList
.
get
(
0
);
SaveSchemeConfigDTO
.
RingListElement
ringListElement
=
phaseScheme
.
getRingList
().
get
(
0
);
List
<
SaveSchemeConfigDTO
.
GroupListElement
>
groupList
=
ringListElement
.
getGroupList
();
SaveSchemeConfigDTO
.
GroupListElement
groupListElement
=
groupList
.
get
(
0
);
oriPhaseList
=
groupListElement
.
getPhaseList
();
if
(
ObjectUtil
.
isNotEmpty
(
oriPhaseList
))
{
//修改方向
oriPhaseList
.
forEach
(
x
->
{
List
<
SaveSchemeConfigDTO
.
DirListElement
>
dirList
=
x
.
getDirList
();
if
(
ObjectUtil
.
isNotNull
(
dirList
)){
dirList
.
forEach
(
dir
->
{
dir
.
setDir
(
CrossDirChangeEnum
.
getMsgByCode
(
dir
.
getDir
()).
getDir
());
});
}
});
//TODO 查询当前时间前后半小时的数据
CrossSchemeQueryDTO
crossSchemeQueryDT
=
new
CrossSchemeQueryDTO
();
crossSchemeQueryDT
.
setCrossId
(
crossIdAndTimeDTO
.
getCrossId
());
crossSchemeQueryDT
.
setPattern
(
String
.
valueOf
(
schemeId
));
crossSchemeQueryDT
.
setDatetime
(
crossIdAndTimeDTO
.
getDatetime
());
JsonViewObject
viewObject
=
utcFeignClients
.
selectCrossSchemeOptLogByParams
(
crossSchemeQueryDT
);
Integer
optCode
=
viewObject
.
getCode
();
if
(
optCode
!=
200
)
{
optPhaseList
=
oriPhaseList
;
log
.
error
(
"远程调用,获取优化后的方案信息 异常,路口id:{},方案号:"
,
crossIdAndTimeDTO
.
getCrossId
(),
schemeId
);
}
else
{
ObjectMapper
mapper
=
JacksonUtils
.
getInstance
();
SchemeOptLogPO
schemeOptLogPO
=
mapper
.
convertValue
(
viewObject
.
getContent
(),
new
TypeReference
<
SchemeOptLogPO
>()
{
});
List
<
CrossSchemeStageOptLogPO
>
beforeTime
=
schemeOptLogPO
.
getBeforeTime
();
List
<
CrossSchemeStageOptLogPO
>
afterTime
=
schemeOptLogPO
.
getAfterTime
();
//30分钟之前有数据,取就行 ;如果30分钟之前没有数,则取原方案
if
(
CollectionUtil
.
isNotEmpty
(
beforeTime
)){
for
(
int
i
=
0
;
i
<
beforeTime
.
size
();
i
++)
{
if
(
i
==
oriPhaseList
.
size
()){
break
;
}
CrossSchemeStageOptLogPO
optLogPO
=
beforeTime
.
get
(
i
);
SaveSchemeConfigDTO
.
PhaseListElement
phaseListElement
=
oriPhaseList
.
get
(
i
);
SaveSchemeConfigDTO
.
PhaseListElement
optPhase
=
new
SaveSchemeConfigDTO
.
PhaseListElement
();
BeanUtils
.
copyProperties
(
phaseListElement
,
optPhase
);
Integer
yellowTime
=
phaseListElement
.
getYellowTime
();
Integer
redTime
=
phaseListElement
.
getRedTime
();
//相位时间
Integer
phaseTime
=
optLogPO
.
getPhaseTime
();
//绿灯时间
int
greenTime
=
phaseTime
-
yellowTime
-
redTime
;
if
(
greenTime
<=
0
){
optPhase
.
setGreenTime
(
phaseTime
);
optPhase
.
setYellowTime
(
0
);
optPhase
.
setRedTime
(
0
);
}
else
{
optPhase
.
setGreenTime
(
greenTime
);
}
optPhaseList
.
add
(
optPhase
);
}
oriPhaseList
.
clear
();
oriPhaseList
.
addAll
(
optPhaseList
);
}
if
(
CollectionUtil
.
isNotEmpty
(
afterTime
)){
optPhaseList
.
clear
();
for
(
int
i
=
0
;
i
<
afterTime
.
size
();
i
++)
{
if
(
i
==
oriPhaseList
.
size
()){
break
;
}
CrossSchemeStageOptLogPO
optLogPO
=
beforeTime
.
get
(
i
);
SaveSchemeConfigDTO
.
PhaseListElement
phaseListElement
=
oriPhaseList
.
get
(
i
);
SaveSchemeConfigDTO
.
PhaseListElement
optPhase
=
new
SaveSchemeConfigDTO
.
PhaseListElement
();
BeanUtils
.
copyProperties
(
phaseListElement
,
optPhase
);
Integer
yellowTime
=
phaseListElement
.
getYellowTime
();
Integer
redTime
=
phaseListElement
.
getRedTime
();
//相位时间
Integer
phaseTime
=
optLogPO
.
getPhaseTime
();
//绿灯时间
int
greenTime
=
phaseTime
-
yellowTime
-
redTime
;
if
(
greenTime
<=
0
){
optPhase
.
setGreenTime
(
phaseTime
);
optPhase
.
setYellowTime
(
0
);
optPhase
.
setRedTime
(
0
);
}
else
{
optPhase
.
setGreenTime
(
greenTime
);
}
optPhaseList
.
add
(
optPhase
);
}
}
else
{
optPhaseList
=
oriPhaseList
;
}
}
}
ringPhasePO
.
setOriPhaseList
(
oriPhaseList
);
ringPhasePO
.
setOptPhaseList
(
optPhaseList
);
return
ringPhasePO
;
}
@Override
@Override
public
List
<
SaveSchemeConfigDTO
.
PhaseListElement
>
phaseListByTimeSingleRing
(
CrossIdAndTimeDTO
crossIdAndTimeDTO
)
{
public
List
<
SaveSchemeConfigDTO
.
PhaseListElement
>
phaseListByTimeSingleRing
(
CrossIdAndTimeDTO
crossIdAndTimeDTO
)
{
List
<
SaveSchemeConfigDTO
.
PhaseListElement
>
phaseListByTime
=
new
ArrayList
<>();
List
<
SaveSchemeConfigDTO
.
PhaseListElement
>
phaseListByTime
=
new
ArrayList
<>();
...
...
signal-control-service/src/main/java/net/wanji/web/service/scheme/impl/SchemeConfigServiceImpl.java
View file @
70c81cea
...
@@ -236,6 +236,45 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
...
@@ -236,6 +236,45 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
}
}
return
phaseSchemeList
;
return
phaseSchemeList
;
}
}
/**
* 通过方案号和路口号构造方案列表
*
* @param crossId
* @return java.util.List<net.wanji.web.dto.SaveSchemeConfigDTO.PhaseScheme>
* @author Kent HAN
* @date 2023/1/12 9:23
*/
public
List
<
SaveSchemeConfigDTO
.
PhaseScheme
>
buildPhaseSchemeListByCrossIdAndSchemeNo
(
String
crossId
,
String
schemeNo
)
{
List
<
SaveSchemeConfigDTO
.
PhaseScheme
>
phaseSchemeList
=
new
ArrayList
<>();
List
<
BaseCrossSchemePO
>
baseCrossSchemePOList
=
baseCrossSchemeMapper
.
listCrossSchemeInfo
(
crossId
,
schemeNo
,
null
);
for
(
BaseCrossSchemePO
baseCrossSchemePO
:
baseCrossSchemePOList
)
{
SaveSchemeConfigDTO
.
PhaseScheme
phaseScheme
=
new
SaveSchemeConfigDTO
.
PhaseScheme
();
phaseScheme
.
setSchemeNo
(
baseCrossSchemePO
.
getSchemeNo
());
phaseScheme
.
setName
(
baseCrossSchemePO
.
getName
());
phaseScheme
.
setSchemeId
(
baseCrossSchemePO
.
getId
());
// 获取协调相位号
Integer
coordPhaseId
=
baseCrossSchemePO
.
getCoordPhase
();
if
(
coordPhaseId
!=
null
)
{
CrossPhasePO
crossPhasePO
=
crossPhaseMapper
.
selectById
(
coordPhaseId
);
if
(
crossPhasePO
!=
null
)
{
phaseScheme
.
setCoordPhaseNo
(
crossPhasePO
.
getPhaseNo
());
}
}
phaseScheme
.
setCycle
(
baseCrossSchemePO
.
getCycle
());
phaseScheme
.
setOffset
(
baseCrossSchemePO
.
getOffset
());
phaseScheme
.
setStatus
(
baseCrossSchemePO
.
getStatus
());
// 构造环列表
Integer
schemeId
=
baseCrossSchemeMapper
.
selectIdByCrossIdAndSchemeNo
(
crossId
,
schemeNo
);
List
<
SaveSchemeConfigDTO
.
RingListElement
>
ringList
=
buildRingList
(
crossId
,
schemeId
);
phaseScheme
.
setRingList
(
ringList
);
// 构造特殊控制列表
List
<
SaveSchemeConfigDTO
.
PhaseListElement
>
specialControlList
=
buildSpecialControlList
(
crossId
,
schemeId
);
phaseScheme
.
setSpecialControlModeList
(
specialControlList
);
phaseSchemeList
.
add
(
phaseScheme
);
}
return
phaseSchemeList
;
}
/**
/**
* 构造特殊控制列表
* 构造特殊控制列表
...
...
signal-feign-service/src/main/java/net/wanji/feign/service/common/FeignCommon.java
View file @
70c81cea
...
@@ -150,4 +150,8 @@ public interface FeignCommon {
...
@@ -150,4 +150,8 @@ public interface FeignCommon {
@PostMapping
(
"/staticInfo/selectSchemeByParams"
)
@PostMapping
(
"/staticInfo/selectSchemeByParams"
)
JsonViewObject
selectSchemeByParams
(
@RequestBody
QueryByCrossIdAndTimeDTO
queryByCrossIdAndTimeDTO
);
JsonViewObject
selectSchemeByParams
(
@RequestBody
QueryByCrossIdAndTimeDTO
queryByCrossIdAndTimeDTO
);
// 根据条件查询临时方案下发日志
@PostMapping
(
"/staticInfo/selectCrossSchemeOptLogByParams"
)
JsonViewObject
selectCrossSchemeOptLogByParams
(
@RequestBody
CrossSchemeQueryDTO
crossSchemeQueryDT
);
}
}
signal-optimize-service/src/main/java/net/wanji/opt/common/enums/EventInfoTypeEnum.java
0 → 100644
View file @
70c81cea
package
net
.
wanji
.
opt
.
common
.
enums
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
net.wanji.common.utils.tool.StringUtils
;
/**
* @author duanruiming
* @date 2025/01/07 20:24
*/
@Getter
@AllArgsConstructor
public
enum
EventInfoTypeEnum
{
// 事件类型转化
PHASE_EMPTY
(
5
,
"701"
,
"相位空放"
),
CROSS_UNBALANCE
(
1
,
"702"
,
"路口失衡"
),
CROSS_OVERFLOW
(
3
,
"703"
,
"路口溢出"
),
CROSS_DEADLOCK
(
4
,
"704"
,
"路口死锁"
),
GREEN_SLOW
(
6
,
"705"
,
"干线-缓行"
),
GREEN_CONGEST
(
7
,
"706"
,
"干线-拥堵"
),
CROSS_CONGEST
(
2
,
"707"
,
"路口拥堵"
);
private
Integer
optType
;
private
String
eventType
;
private
String
desc
;
/**
* 通过事件类型获取优化类型
* @param eventType
* @return
*/
public
static
Integer
getOptType
(
String
eventType
)
{
for
(
EventInfoTypeEnum
value
:
EventInfoTypeEnum
.
values
())
{
if
(
StringUtils
.
equalsIgnoreCase
(
eventType
,
value
.
getEventType
()))
{
return
value
.
getOptType
();
}
}
return
null
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/controller/induce/InduceSendController.java
View file @
70c81cea
...
@@ -2,18 +2,17 @@ package net.wanji.opt.controller.induce;
...
@@ -2,18 +2,17 @@ package net.wanji.opt.controller.induce;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
freemarker.template.TemplateException
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.framework.Constants
;
import
net.wanji.common.framework.Constants
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.common.utils.tool.DateUtil
;
import
net.wanji.common.utils.tool.DateUtil
;
import
net.wanji.opt.dto.induce.MessageParam
;
import
net.wanji.opt.entity.GreenwaveInduces
;
import
net.wanji.opt.entity.GreenwaveInduces
;
import
net.wanji.opt.entity.GreenwaveInducesHist
;
import
net.wanji.opt.entity.GreenwaveInducesHist
;
import
net.wanji.opt.entity.InduceHist
;
import
net.wanji.opt.entity.InduceHist
;
import
net.wanji.opt.entity.InduceTemplate
;
import
net.wanji.opt.entity.InduceTemplate
;
import
net.wanji.opt.dto.induce.MessageParam
;
import
net.wanji.opt.service.induce.*
;
import
net.wanji.opt.service.induce.*
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.http.HttpHeaders
;
...
@@ -24,7 +23,7 @@ import org.springframework.web.bind.annotation.*;
...
@@ -24,7 +23,7 @@ import org.springframework.web.bind.annotation.*;
import
javax.ws.rs.core.MediaType
;
import
javax.ws.rs.core.MediaType
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.nio.charset.StandardCharsets
;
import
java.nio.charset.StandardCharsets
;
import
java.t
ime.LocalDateTime
;
import
java.t
ext.SimpleDateFormat
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.Objects
;
...
@@ -158,12 +157,15 @@ public class InduceSendController {
...
@@ -158,12 +157,15 @@ public class InduceSendController {
@ApiOperation
(
value
=
"根据设备编号和发布时间获取诱导发布图片"
,
notes
=
"根据设备编号和发布时间获取诱导发布图片"
)
@ApiOperation
(
value
=
"根据设备编号和发布时间获取诱导发布图片"
,
notes
=
"根据设备编号和发布时间获取诱导发布图片"
)
@GetMapping
(
value
=
"/fileCodeHist"
)
@GetMapping
(
value
=
"/fileCodeHist"
)
public
ResponseEntity
<
byte
[]>
ftpFileByCodeAndTime
(
@RequestParam
(
"equipCode"
)
String
equipCode
,
@RequestParam
(
"date"
)
Date
date
)
{
public
ResponseEntity
<
byte
[]>
ftpFileByCodeAndTime
(
@RequestParam
(
"equipCode"
)
String
equipCode
,
@RequestParam
(
"date"
)
String
date
)
{
LambdaQueryWrapper
<
InduceHist
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
LambdaQueryWrapper
<
InduceHist
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
eq
(
InduceHist:
:
getEquipCode
,
equipCode
);
queryWrapper
.
eq
(
InduceHist:
:
getEquipCode
,
equipCode
);
queryWrapper
.
le
(
InduceHist:
:
getCreateTime
,
date
);
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
Date
curDate
=
new
Date
();
String
curDateStr
=
format
.
format
(
curDate
);
String
dateTime
=
curDateStr
.
concat
(
" "
).
concat
(
date
);
queryWrapper
.
eq
(
InduceHist:
:
getCreateTime
,
dateTime
);
queryWrapper
.
orderByDesc
(
InduceHist:
:
getCreateTime
);
queryWrapper
.
orderByDesc
(
InduceHist:
:
getCreateTime
);
queryWrapper
.
last
(
"limit 1"
);
InduceHist
pictureFile
=
this
.
induceHistService
.
getOne
(
queryWrapper
,
false
);
InduceHist
pictureFile
=
this
.
induceHistService
.
getOne
(
queryWrapper
,
false
);
if
(
Objects
.
isNull
(
pictureFile
)
||
pictureFile
.
getFilePath
()
==
null
)
{
if
(
Objects
.
isNull
(
pictureFile
)
||
pictureFile
.
getFilePath
()
==
null
)
{
return
ResponseEntity
.
status
(
HttpStatus
.
OK
)
return
ResponseEntity
.
status
(
HttpStatus
.
OK
)
...
...
signal-optimize-service/src/main/java/net/wanji/opt/controller/signalopt/CrossIndexController.java
View file @
70c81cea
...
@@ -11,14 +11,16 @@ import net.wanji.databus.po.CrossDirDataRealtimePO;
...
@@ -11,14 +11,16 @@ import net.wanji.databus.po.CrossDirDataRealtimePO;
import
net.wanji.databus.po.CrossDirStatusDataPO
;
import
net.wanji.databus.po.CrossDirStatusDataPO
;
import
net.wanji.databus.po.TBaseCrossInfo
;
import
net.wanji.databus.po.TBaseCrossInfo
;
import
net.wanji.opt.dto.strategy.AddOrUpdateSceneDTO
;
import
net.wanji.opt.dto.strategy.AddOrUpdateSceneDTO
;
import
net.wanji.opt.po.trend.HoloEventInfoPO
;
import
net.wanji.opt.service.CrossIndexService
;
import
net.wanji.opt.service.CrossIndexService
;
import
net.wanji.opt.vo.AIOptResultVO
;
import
net.wanji.opt.vo.AIOptResultVO
;
import
net.wanji.opt.vo.CrossOptResult
;
import
net.wanji.opt.vo.CrossOptResult
;
import
net.wanji.opt.vo.
c
rossStatusCountVO
;
import
net.wanji.opt.vo.
C
rossStatusCountVO
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
javax.ws.rs.core.MediaType
;
import
javax.ws.rs.core.MediaType
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -103,16 +105,32 @@ public class CrossIndexController {
...
@@ -103,16 +105,32 @@ public class CrossIndexController {
return
JsonViewObject
.
newInstance
().
success
(
results
);
return
JsonViewObject
.
newInstance
().
success
(
results
);
}
}
@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
)
@GetMapping
(
value
=
"/crossStatusCount"
)
@GetMapping
(
value
=
"/crossStatusCount"
)
@ApiResponses
({
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
AddOrUpdateSceneDTO
.
class
),
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
AddOrUpdateSceneDTO
.
class
),
})
})
public
JsonViewObject
crossStatusCount
(
String
crossId
)
{
public
JsonViewObject
crossStatusCount
(
String
crossId
)
{
crossStatusCountVO
result
=
new
crossStatusCountVO
();
List
<
CrossStatusCountVO
>
results
=
new
ArrayList
<>
();
try
{
try
{
result
=
crossIndexService
.
crossStatusCount
(
crossId
);
results
=
crossIndexService
.
crossStatusCount
(
crossId
);
}
catch
(
Exception
e
)
{
JsonViewObject
.
newInstance
().
fail
(
"优化监测-问题诊断"
);
}
return
JsonViewObject
.
newInstance
().
success
(
results
);
}
@ApiOperation
(
value
=
"交通体检-路口监测-事件方向转向"
,
notes
=
"交通体检-路口监测-事件方向转向"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@GetMapping
(
value
=
"/crossEventDirTurn"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
HoloEventInfoPO
.
class
),
})
public
JsonViewObject
crossEventDirTurn
(
String
crossId
)
{
HoloEventInfoPO
result
=
new
HoloEventInfoPO
();
try
{
result
=
crossIndexService
.
crossEventDirTurn
(
crossId
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
JsonViewObject
.
newInstance
().
fail
(
"优化监测-问题诊断"
);
JsonViewObject
.
newInstance
().
fail
(
"优化监测-问题诊断"
);
}
}
...
...
signal-optimize-service/src/main/java/net/wanji/opt/po/trend/HoloEventInfoPO.java
View file @
70c81cea
package
net
.
wanji
.
opt
.
po
.
trend
;
package
net
.
wanji
.
opt
.
po
.
trend
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
...
@@ -108,6 +109,22 @@ public class HoloEventInfoPO implements Serializable {
...
@@ -108,6 +109,22 @@ public class HoloEventInfoPO implements Serializable {
private
Integer
alarmStatus
;
private
Integer
alarmStatus
;
@ApiModelProperty
(
value
=
"时间轴"
,
notes
=
""
)
@ApiModelProperty
(
value
=
"时间轴"
,
notes
=
""
)
@TableField
(
exist
=
false
)
private
String
timeAxis
;
private
String
timeAxis
;
/**
* 事件方向转向
*/
@ApiModelProperty
(
name
=
"事件方向,溢出方向"
,
notes
=
""
)
private
String
dir
;
@ApiModelProperty
(
name
=
"事件方向,溢出方向"
,
notes
=
""
)
private
String
turn
;
@ApiModelProperty
(
name
=
"失衡指数1-10"
,
notes
=
""
)
private
Double
unbalanceIndex
;
/**
* 溢出程度的刻画(没溢出:1,即将溢出:3,溢出:5,溢停:7)
*/
@ApiModelProperty
(
name
=
"溢出指数1-10"
,
notes
=
""
)
private
Double
spilloverIndex
;
}
}
\ No newline at end of file
signal-optimize-service/src/main/java/net/wanji/opt/service/CrossIndexService.java
View file @
70c81cea
...
@@ -5,9 +5,10 @@ import net.wanji.databus.po.CrossDataRealtimePO;
...
@@ -5,9 +5,10 @@ import net.wanji.databus.po.CrossDataRealtimePO;
import
net.wanji.databus.po.CrossDirDataRealtimePO
;
import
net.wanji.databus.po.CrossDirDataRealtimePO
;
import
net.wanji.databus.po.CrossDirStatusDataPO
;
import
net.wanji.databus.po.CrossDirStatusDataPO
;
import
net.wanji.databus.po.TBaseCrossInfo
;
import
net.wanji.databus.po.TBaseCrossInfo
;
import
net.wanji.opt.po.trend.HoloEventInfoPO
;
import
net.wanji.opt.vo.AIOptResultVO
;
import
net.wanji.opt.vo.AIOptResultVO
;
import
net.wanji.opt.vo.CrossOptResult
;
import
net.wanji.opt.vo.CrossOptResult
;
import
net.wanji.opt.vo.
c
rossStatusCountVO
;
import
net.wanji.opt.vo.
C
rossStatusCountVO
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -27,7 +28,8 @@ public interface CrossIndexService {
...
@@ -27,7 +28,8 @@ public interface CrossIndexService {
List
<
AIOptResultVO
>
crossAIList
()
throws
Exception
;
List
<
AIOptResultVO
>
crossAIList
()
throws
Exception
;
crossStatusCountVO
crossStatusCount
(
String
crossId
);
List
<
CrossStatusCountVO
>
crossStatusCount
(
String
crossId
)
throws
Exception
;
HoloEventInfoPO
crossEventDirTurn
(
String
crossId
)
throws
Exception
;
/**
/**
* @Description 查询据当前时间某小时的数据
* @Description 查询据当前时间某小时的数据
...
...
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/CrossIndexServiceImpl.java
View file @
70c81cea
...
@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
...
@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.utils.tool.LocalDateTimeUtil
;
import
net.wanji.common.utils.tool.LocalDateTimeUtil
;
import
net.wanji.common.utils.tool.StringUtils
;
import
net.wanji.databus.bo.CrossIdBO
;
import
net.wanji.databus.bo.CrossIdBO
;
import
net.wanji.databus.dao.mapper.BaseCrossInfoMapper
;
import
net.wanji.databus.dao.mapper.BaseCrossInfoMapper
;
import
net.wanji.databus.dao.mapper.CrossDataRealtimeMapper
;
import
net.wanji.databus.dao.mapper.CrossDataRealtimeMapper
;
...
@@ -11,15 +12,18 @@ import net.wanji.databus.dao.mapper.CrossDirDataHistMapper;
...
@@ -11,15 +12,18 @@ import net.wanji.databus.dao.mapper.CrossDirDataHistMapper;
import
net.wanji.databus.dao.mapper.CrossDirDataRealtimeMapper
;
import
net.wanji.databus.dao.mapper.CrossDirDataRealtimeMapper
;
import
net.wanji.databus.po.*
;
import
net.wanji.databus.po.*
;
import
net.wanji.opt.common.enums.CrossOptResultStrategyEnum
;
import
net.wanji.opt.common.enums.CrossOptResultStrategyEnum
;
import
net.wanji.opt.common.enums.EventInfoTypeEnum
;
import
net.wanji.opt.common.enums.OptStatusEnum
;
import
net.wanji.opt.common.enums.OptStatusEnum
;
import
net.wanji.opt.common.enums.StrategyControlEnum
;
import
net.wanji.opt.common.enums.StrategyControlEnum
;
import
net.wanji.opt.dao.mapper.HoloEventMapper
;
import
net.wanji.opt.dao.mapper.HoloEventMapper
;
import
net.wanji.opt.dao.mapper.StrategyCrossResultMapper
;
import
net.wanji.opt.dao.mapper.StrategyCrossResultMapper
;
import
net.wanji.opt.po.trend.HoloEventInfoPO
;
import
net.wanji.opt.service.CrossIndexService
;
import
net.wanji.opt.service.CrossIndexService
;
import
net.wanji.opt.synthesis.pojo.StrategyCrossResultEntity
;
import
net.wanji.opt.synthesis.pojo.StrategyCrossResultEntity
;
import
net.wanji.opt.vo.AIOptResultVO
;
import
net.wanji.opt.vo.AIOptResultVO
;
import
net.wanji.opt.vo.CrossOptResult
;
import
net.wanji.opt.vo.CrossOptResult
;
import
net.wanji.opt.vo.crossStatusCountVO
;
import
net.wanji.opt.vo.CrossStatusCountVO
;
import
org.apache.curator.drivers.EventTrace
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.CollectionUtils
;
...
@@ -157,32 +161,49 @@ public class CrossIndexServiceImpl implements CrossIndexService {
...
@@ -157,32 +161,49 @@ public class CrossIndexServiceImpl implements CrossIndexService {
}
}
@Override
@Override
public
crossStatusCountVO
crossStatusCount
(
String
crossId
)
{
public
List
<
CrossStatusCountVO
>
crossStatusCount
(
String
crossId
)
throws
Exception
{
List
<
CrossStatusCountVO
>
results
=
new
ArrayList
<>();
try
{
LocalDate
currentDate
=
LocalDate
.
now
();
LocalDate
currentDate
=
LocalDate
.
now
();
LocalTime
startTime
=
LocalTime
.
MIDNIGHT
;
LocalTime
startTime
=
LocalTime
.
MIDNIGHT
;
LocalDateTime
startOfDay
=
LocalDateTime
.
of
(
currentDate
,
startTime
);
LocalDateTime
startOfDay
=
LocalDateTime
.
of
(
currentDate
,
startTime
);
LambdaQueryWrapper
<
StrategyCrossResultEntity
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
LambdaQueryWrapper
<
HoloEventInfoPO
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
eq
(
StrategyCrossResultEntity:
:
getCrossId
,
crossId
);
queryWrapper
.
eq
(
HoloEventInfoPO:
:
getCrossId
,
crossId
);
queryWrapper
.
ge
(
StrategyCrossResultEntity:
:
getIssueTime
,
startOfDay
);
queryWrapper
.
ge
(
HoloEventInfoPO:
:
getStartTime
,
startOfDay
);
List
<
StrategyCrossResultEntity
>
list
=
strategyCrossResultMapper
.
selectList
(
queryWrapper
);
List
<
HoloEventInfoPO
>
holoEventInfoPOS
=
holoEventMapper
.
selectList
(
queryWrapper
);
crossStatusCountVO
crossStatusCountVO
=
new
crossStatusCountVO
();
if
(!
CollectionUtils
.
isEmpty
(
holoEventInfoPOS
))
{
if
(!
CollectionUtils
.
isEmpty
(
list
))
{
Map
<
String
,
List
<
HoloEventInfoPO
>>
eventTypeMap
=
holoEventInfoPOS
.
stream
().
collect
(
Collectors
.
groupingBy
(
HoloEventInfoPO:
:
getType
));
Map
<
Integer
,
List
<
StrategyCrossResultEntity
>>
listMap
=
list
.
stream
().
collect
(
Collectors
.
groupingBy
(
StrategyCrossResultEntity:
:
getCurrentAlgo
));
for
(
Map
.
Entry
<
String
,
List
<
HoloEventInfoPO
>>
entry
:
eventTypeMap
.
entrySet
())
{
for
(
Map
.
Entry
<
Integer
,
List
<
StrategyCrossResultEntity
>>
entry
:
listMap
.
entrySet
())
{
String
eventType
=
entry
.
getKey
();
Integer
currentAlgo
=
entry
.
getKey
();
List
<
HoloEventInfoPO
>
value
=
entry
.
getValue
();
List
<
StrategyCrossResultEntity
>
value
=
entry
.
getValue
();
// 过滤干线
if
(
Objects
.
equals
(
currentAlgo
,
CrossOptResultStrategyEnum
.
ONE
.
getCode
()))
{
if
(
StringUtils
.
equalsIgnoreCase
(
eventType
,
EventInfoTypeEnum
.
GREEN_SLOW
.
getEventType
())
crossStatusCountVO
.
setPhaseEmptyCount
(
value
.
size
());
||
StringUtils
.
equalsIgnoreCase
(
eventType
,
EventInfoTypeEnum
.
GREEN_CONGEST
.
getEventType
()))
{
}
continue
;
if
(
Objects
.
equals
(
currentAlgo
,
CrossOptResultStrategyEnum
.
TWO
.
getCode
()))
{
}
crossStatusCountVO
.
setUnbalanceCount
(
value
.
size
());
// 当前事件返回实体
}
CrossStatusCountVO
crossStatusCountVO
=
new
CrossStatusCountVO
();
if
(
Objects
.
equals
(
currentAlgo
,
CrossOptResultStrategyEnum
.
THREE
.
getCode
()))
{
crossStatusCountVO
.
setType
(
EventInfoTypeEnum
.
getOptType
(
eventType
));
crossStatusCountVO
.
setOverFlowCount
(
value
.
size
());
crossStatusCountVO
.
setCount
(
value
.
size
());
List
<
CrossStatusCountVO
.
DirTurn
>
dirTurns
=
new
ArrayList
<>();
if
(!
CollectionUtils
.
isEmpty
(
value
))
{
for
(
HoloEventInfoPO
holoEventInfoPO
:
value
)
{
CrossStatusCountVO
.
DirTurn
dirTurn
=
new
CrossStatusCountVO
.
DirTurn
();
dirTurn
.
setDir
(
holoEventInfoPO
.
getDir
());
dirTurn
.
setTurn
(
holoEventInfoPO
.
getTurn
());
dirTurns
.
add
(
dirTurn
);
}
}
crossStatusCountVO
.
setList
(
dirTurns
);
results
.
add
(
crossStatusCountVO
);
}
}
}
}
}
catch
(
Exception
e
)
{
log
.
error
(
"优化监测-问题诊断查询异常:"
,
e
);
throw
new
RuntimeException
(
e
);
}
}
return
crossStatusCountVO
;
return
results
;
}
}
@Override
@Override
...
@@ -209,4 +230,22 @@ public class CrossIndexServiceImpl implements CrossIndexService {
...
@@ -209,4 +230,22 @@ public class CrossIndexServiceImpl implements CrossIndexService {
return
crossDirStatusDataPO
;
return
crossDirStatusDataPO
;
}
}
@Override
public
HoloEventInfoPO
crossEventDirTurn
(
String
crossId
)
throws
Exception
{
try
{
LambdaQueryWrapper
<
HoloEventInfoPO
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
eq
(
HoloEventInfoPO:
:
getCrossId
,
crossId
);
queryWrapper
.
orderByDesc
(
HoloEventInfoPO:
:
getStartTime
);
queryWrapper
.
last
(
"limit 1"
);
HoloEventInfoPO
holoEventInfoPO
=
holoEventMapper
.
selectOne
(
queryWrapper
);
if
(
Objects
.
nonNull
(
holoEventInfoPO
))
{
return
holoEventInfoPO
;
}
return
null
;
}
catch
(
Exception
e
)
{
log
.
error
(
"交通体检-路口监测-事件方向转向 查询失败:"
,
e
);
throw
new
Exception
(
e
);
}
}
}
}
signal-optimize-service/src/main/java/net/wanji/opt/synthesis/controller/StrategyGreenBeltController.java
View file @
70c81cea
...
@@ -43,6 +43,18 @@ public class StrategyGreenBeltController {
...
@@ -43,6 +43,18 @@ public class StrategyGreenBeltController {
return
JsonViewObject
.
newInstance
().
success
(
greenBeltChartVO
);
return
JsonViewObject
.
newInstance
().
success
(
greenBeltChartVO
);
}
}
@ApiOperation
(
value
=
"绿波时序图历史查询"
,
notes
=
"绿波时序图历史查询"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@GetMapping
(
value
=
"/greenBeltChartHist"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
GreenBeltInfoVO
.
class
),
})
public
JsonViewObject
greenBeltChartHist
(
Integer
greenId
,
String
dateStr
)
throws
Exception
{
GreenBeltChartVO
greenBeltChartVO
=
strategyGreenBeltService
.
selectChartHist
(
greenId
,
dateStr
);
return
JsonViewObject
.
newInstance
().
success
(
greenBeltChartVO
);
}
@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
)
@GetMapping
(
value
=
"/greenBeltChartControlTime"
)
@GetMapping
(
value
=
"/greenBeltChartControlTime"
)
...
...
signal-optimize-service/src/main/java/net/wanji/opt/synthesis/service/StrategyGreenBeltService.java
View file @
70c81cea
...
@@ -13,6 +13,7 @@ import java.util.List;
...
@@ -13,6 +13,7 @@ import java.util.List;
public
interface
StrategyGreenBeltService
{
public
interface
StrategyGreenBeltService
{
GreenBeltChartVO
selectChart
(
Integer
greenId
,
String
dateStr
);
GreenBeltChartVO
selectChart
(
Integer
greenId
,
String
dateStr
);
GreenBeltChartVO
selectChartHist
(
Integer
greenId
,
String
dateStr
);
List
<
GreenBeltStopTimesQueueLengthVO
>
greenBeltStopTimeQueueLength
(
Integer
greenId
);
List
<
GreenBeltStopTimesQueueLengthVO
>
greenBeltStopTimeQueueLength
(
Integer
greenId
);
GreenBeltAreaIndexVO
greenBeltAreaIndex
(
Integer
greenId
);
GreenBeltAreaIndexVO
greenBeltAreaIndex
(
Integer
greenId
);
List
<
String
>
greenBeltChartControlTime
(
Integer
greenId
);
List
<
String
>
greenBeltChartControlTime
(
Integer
greenId
);
...
...
signal-optimize-service/src/main/java/net/wanji/opt/synthesis/service/impl/StrategyGreenBeltServiceImpl.java
View file @
70c81cea
...
@@ -26,6 +26,7 @@ import org.springframework.util.CollectionUtils;
...
@@ -26,6 +26,7 @@ import org.springframework.util.CollectionUtils;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.text.ParseException
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.time.LocalDate
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.time.LocalTime
;
import
java.time.LocalTime
;
...
@@ -180,6 +181,53 @@ public class StrategyGreenBeltServiceImpl implements StrategyGreenBeltService {
...
@@ -180,6 +181,53 @@ public class StrategyGreenBeltServiceImpl implements StrategyGreenBeltService {
return
null
;
return
null
;
}
}
@Override
public
GreenBeltChartVO
selectChartHist
(
Integer
greenId
,
String
dateStr
)
{
try
{
ObjectMapper
mapper
=
JacksonUtils
.
getInstance
();
LambdaQueryWrapper
<
StrategyGreenOptHistEntity
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
// 查询历史时序图
if
(
StringUtils
.
isNotBlank
(
dateStr
))
{
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
Date
curDate
=
new
Date
();
String
curDateStr
=
format
.
format
(
curDate
);
String
dateTime
=
curDateStr
.
concat
(
" "
).
concat
(
dateStr
);
queryWrapper
.
eq
(
StrategyGreenOptHistEntity:
:
getGreenId
,
greenId
);
queryWrapper
.
eq
(
StrategyGreenOptHistEntity:
:
getControlMethod
,
1
);
queryWrapper
.
eq
(
StrategyGreenOptHistEntity:
:
getControlTime
,
dateTime
);
}
else
{
queryWrapper
.
eq
(
StrategyGreenOptHistEntity:
:
getGreenId
,
greenId
);
queryWrapper
.
eq
(
StrategyGreenOptHistEntity:
:
getControlMethod
,
1
);
queryWrapper
.
orderByDesc
(
StrategyGreenOptHistEntity:
:
getControlTime
);
//queryWrapper.last("LIMIT 2");
queryWrapper
.
last
(
"limit 2"
);
}
List
<
StrategyGreenOptHistEntity
>
entities
=
strategyGreenOptHistMapper
.
selectList
(
queryWrapper
);
if
(!
CollectionUtils
.
isEmpty
(
entities
))
{
Map
<
String
,
List
<
StrategyGreenOptHistEntity
>>
controlTimeMap
=
entities
.
stream
().
collect
(
Collectors
.
groupingBy
(
StrategyGreenOptHistEntity:
:
getControlTime
));
// 判断下发是否是正向还是反向 相同时间两条,双向绿波
GreenBeltInfoVO
greenBeltInfoVO
=
new
GreenBeltInfoVO
();
List
<
GreenBeltInfoVO
.
DirGreenDetail
>
dirGreenDetails
=
new
ArrayList
<>();
// 相同时间,双向绿波
if
(
controlTimeMap
.
size
()
==
1
)
{
setBeltInfo
(
mapper
,
entities
,
greenBeltInfoVO
,
dirGreenDetails
);
}
else
{
entities
.
remove
(
entities
.
size
()
-
1
);
setBeltInfo
(
mapper
,
entities
,
greenBeltInfoVO
,
dirGreenDetails
);
}
greenBeltInfoVO
.
setDirGreenDetails
(
dirGreenDetails
);
GreenBeltChartVO
greenBeltChartVO
=
calGreenChart
(
greenBeltInfoVO
);
return
greenBeltChartVO
;
}
}
catch
(
Exception
e
)
{
log
.
error
(
"数据转化异常"
,
e
);
throw
new
RuntimeException
(
e
);
}
return
null
;
}
private
static
void
setBeltInfo
(
ObjectMapper
mapper
,
List
<
StrategyGreenOptHistEntity
>
entities
,
GreenBeltInfoVO
greenBeltInfoVO
,
List
<
GreenBeltInfoVO
.
DirGreenDetail
>
dirGreenDetails
)
throws
JsonProcessingException
{
private
static
void
setBeltInfo
(
ObjectMapper
mapper
,
List
<
StrategyGreenOptHistEntity
>
entities
,
GreenBeltInfoVO
greenBeltInfoVO
,
List
<
GreenBeltInfoVO
.
DirGreenDetail
>
dirGreenDetails
)
throws
JsonProcessingException
{
for
(
StrategyGreenOptHistEntity
entity
:
entities
)
{
for
(
StrategyGreenOptHistEntity
entity
:
entities
)
{
greenBeltInfoVO
.
setGreenId
(
entity
.
getGreenId
());
greenBeltInfoVO
.
setGreenId
(
entity
.
getGreenId
());
...
...
signal-optimize-service/src/main/java/net/wanji/opt/vo/CrossStatusCountVO.java
0 → 100644
View file @
70c81cea
package
net
.
wanji
.
opt
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.List
;
/**
* @author duanruiming
* @date 2024/12/11 22:50
* 优化监测问题诊断实体
*/
@Data
@ApiModel
(
description
=
"优化监测问题诊断实体"
)
public
class
CrossStatusCountVO
{
@ApiModelProperty
(
"事件类型 1失衡;2拥堵;3溢出;5相位空放"
)
private
Integer
type
;
@ApiModelProperty
(
"发生次数"
)
private
Integer
count
;
@ApiModelProperty
(
"事件方向转向列表"
)
private
List
<
DirTurn
>
list
;
@Data
public
static
class
DirTurn
{
@ApiModelProperty
(
"方向1北.... 7西北"
)
private
String
dir
;
@ApiModelProperty
(
"转向 1左 2直 3右"
)
private
String
turn
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/vo/crossStatusCountVO.java
deleted
100644 → 0
View file @
7b89ffc9
package
net
.
wanji
.
opt
.
vo
;
import
lombok.Data
;
/**
* @author duanruiming
* @date 2024/12/11 22:50
*/
@Data
public
class
crossStatusCountVO
{
private
int
overFlowCount
;
private
int
unbalanceCount
;
private
int
phaseEmptyCount
;
private
int
congestionCount
;
}
signal-utc-service/src/main/java/net/wanji/utc/config/ScheduledConfig.java
0 → 100644
View file @
70c81cea
package
net
.
wanji
.
utc
.
config
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.scheduling.annotation.SchedulingConfigurer
;
import
org.springframework.scheduling.config.ScheduledTaskRegistrar
;
import
java.util.concurrent.Executor
;
import
java.util.concurrent.Executors
;
/**
* @ClassName ScheduledConfig
* @Description 定时任务线程池配置
* @Author zhouleilei
* @Date 2025/1/5 17:01
*/
@Configuration
public
class
ScheduledConfig
implements
SchedulingConfigurer
{
@Bean
public
Executor
taskExecutor
()
{
//指定定时任务线程数量,可根据需求自行调节
return
Executors
.
newScheduledThreadPool
(
10
);
}
@Override
public
void
configureTasks
(
ScheduledTaskRegistrar
scheduledTaskRegistrar
)
{
scheduledTaskRegistrar
.
setScheduler
(
taskExecutor
());
}
}
signal-utc-service/src/main/java/net/wanji/utc/controller/StaticInfoController.java
View file @
70c81cea
...
@@ -186,6 +186,15 @@ public class StaticInfoController {
...
@@ -186,6 +186,15 @@ public class StaticInfoController {
public
JsonViewObject
selectSchemeByParams
(
@Validated
@RequestBody
QueryByCrossIdAndTimeDTO
queryByCrossIdAndTimeDTO
)
throws
Exception
{
public
JsonViewObject
selectSchemeByParams
(
@Validated
@RequestBody
QueryByCrossIdAndTimeDTO
queryByCrossIdAndTimeDTO
)
throws
Exception
{
return
staticInfoService
.
selectSchemeByParams
(
queryByCrossIdAndTimeDTO
);
return
staticInfoService
.
selectSchemeByParams
(
queryByCrossIdAndTimeDTO
);
}
}
@AspectLog
(
description
=
"根据条件查询临时方案下发日志"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
QUERY
)
@PostMapping
(
value
=
"/selectCrossSchemeOptLogByParams"
,
produces
=
MediaType
.
APPLICATION_JSON
)
@ApiOperation
(
value
=
"根据条件查询临时方案下发日志"
,
notes
=
"根据条件查询临时方案下发日志"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
CrossSchedulesPO
.
class
)
})
public
JsonViewObject
selectSchemeOptLogByParams
(
@Validated
@RequestBody
CrossSchemeQueryDTO
crossSchemeQueryDTO
)
throws
Exception
{
return
staticInfoService
.
selectSchemeOptLogByParams
(
crossSchemeQueryDTO
);
}
}
}
signal-utc-service/src/main/java/net/wanji/utc/service/staticinfo/StaticInfoService.java
View file @
70c81cea
...
@@ -33,5 +33,6 @@ public interface StaticInfoService {
...
@@ -33,5 +33,6 @@ public interface StaticInfoService {
JsonViewObject
crossSchemeRings
(
CrossSchemeRingsDTO
crossSchemeRingsDTO
)
throws
Exception
;
JsonViewObject
crossSchemeRings
(
CrossSchemeRingsDTO
crossSchemeRingsDTO
)
throws
Exception
;
JsonViewObject
schemeOptLog
(
CrossSchemeRingsDTO
crossSchemeRingsDTO
)
throws
Exception
;
JsonViewObject
schemeOptLog
(
CrossSchemeRingsDTO
crossSchemeRingsDTO
)
throws
Exception
;
JsonViewObject
selectSchemeByParams
(
QueryByCrossIdAndTimeDTO
queryByCrossIdAndTimeDTO
)
throws
Exception
;
JsonViewObject
selectSchemeByParams
(
QueryByCrossIdAndTimeDTO
queryByCrossIdAndTimeDTO
)
throws
Exception
;
JsonViewObject
selectSchemeOptLogByParams
(
CrossSchemeQueryDTO
crossSchemeQueryDT
)
throws
Exception
;
}
}
signal-utc-service/src/main/java/net/wanji/utc/service/staticinfo/WanJiCommonStaticInfoService.java
View file @
70c81cea
...
@@ -2,6 +2,7 @@ package net.wanji.utc.service.staticinfo;
...
@@ -2,6 +2,7 @@ package net.wanji.utc.service.staticinfo;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.databus.dao.entity.CrossSchedulesPO
;
import
net.wanji.databus.dao.entity.CrossSchedulesPO
;
import
net.wanji.databus.dto.CrossSchemeQueryDTO
;
import
net.wanji.databus.dto.CrossSchemeRingsDTO
;
import
net.wanji.databus.dto.CrossSchemeRingsDTO
;
import
net.wanji.databus.dto.QueryByCrossIdAndTimeDTO
;
import
net.wanji.databus.dto.QueryByCrossIdAndTimeDTO
;
import
net.wanji.utc.common.Result
;
import
net.wanji.utc.common.Result
;
...
@@ -56,4 +57,6 @@ public interface WanJiCommonStaticInfoService {
...
@@ -56,4 +57,6 @@ public interface WanJiCommonStaticInfoService {
JsonViewObject
crossSchemeRings
(
CrossSchemeRingsDTO
crossSchemeRingsDTO
)
throws
Exception
;
JsonViewObject
crossSchemeRings
(
CrossSchemeRingsDTO
crossSchemeRingsDTO
)
throws
Exception
;
JsonViewObject
schemeOptLog
(
CrossSchemeRingsDTO
crossSchemeRingsDTO
)
throws
Exception
;
JsonViewObject
schemeOptLog
(
CrossSchemeRingsDTO
crossSchemeRingsDTO
)
throws
Exception
;
JsonViewObject
selectSchemeByParams
(
QueryByCrossIdAndTimeDTO
queryByCrossIdAndTimeDTO
)
throws
Exception
;
JsonViewObject
selectSchemeByParams
(
QueryByCrossIdAndTimeDTO
queryByCrossIdAndTimeDTO
)
throws
Exception
;
JsonViewObject
selectSchemeOptLogByParams
(
CrossSchemeQueryDTO
crossSchemeQueryDT
)
throws
Exception
;
}
}
signal-utc-service/src/main/java/net/wanji/utc/service/staticinfo/impl/StaticInfoServiceImpl.java
View file @
70c81cea
...
@@ -244,4 +244,11 @@ public class StaticInfoServiceImpl implements StaticInfoService {
...
@@ -244,4 +244,11 @@ public class StaticInfoServiceImpl implements StaticInfoService {
jsonViewObject
=
wanjiCommonStaticInfoService
.
selectSchemeByParams
(
queryByCrossIdAndTimeDTO
);
jsonViewObject
=
wanjiCommonStaticInfoService
.
selectSchemeByParams
(
queryByCrossIdAndTimeDTO
);
return
jsonViewObject
;
return
jsonViewObject
;
}
}
@Override
public
JsonViewObject
selectSchemeOptLogByParams
(
CrossSchemeQueryDTO
crossSchemeQueryDT
)
throws
Exception
{
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
jsonViewObject
=
wanjiCommonStaticInfoService
.
selectSchemeOptLogByParams
(
crossSchemeQueryDT
);
return
jsonViewObject
;
}
}
}
signal-utc-service/src/main/java/net/wanji/utc/service/staticinfo/impl/WanJiCommonStaticInfoServiceImpl.java
View file @
70c81cea
...
@@ -14,11 +14,9 @@ import net.wanji.common.utils.tool.LocalDateTimeUtil;
...
@@ -14,11 +14,9 @@ import net.wanji.common.utils.tool.LocalDateTimeUtil;
import
net.wanji.common.utils.tool.StringUtils
;
import
net.wanji.common.utils.tool.StringUtils
;
import
net.wanji.databus.dao.entity.*
;
import
net.wanji.databus.dao.entity.*
;
import
net.wanji.databus.dao.mapper.*
;
import
net.wanji.databus.dao.mapper.*
;
import
net.wanji.databus.dto.CrossSchedulesDTO
;
import
net.wanji.databus.dto.*
;
import
net.wanji.databus.dto.CrossSchemeRingsDTO
;
import
net.wanji.databus.dto.PlanSectionDTO
;
import
net.wanji.databus.dto.QueryByCrossIdAndTimeDTO
;
import
net.wanji.databus.po.CrossSchemeRings
;
import
net.wanji.databus.po.CrossSchemeRings
;
import
net.wanji.databus.po.SchemeOptLogPO
;
import
net.wanji.databus.vo.CrossIdVO
;
import
net.wanji.databus.vo.CrossIdVO
;
import
net.wanji.databus.vo.PlanSectionVO
;
import
net.wanji.databus.vo.PlanSectionVO
;
import
net.wanji.databus.vo.SchemePhaseLightsVO
;
import
net.wanji.databus.vo.SchemePhaseLightsVO
;
...
@@ -378,6 +376,20 @@ public class WanJiCommonStaticInfoServiceImpl implements WanJiCommonStaticInfoSe
...
@@ -378,6 +376,20 @@ public class WanJiCommonStaticInfoServiceImpl implements WanJiCommonStaticInfoSe
return
jsonViewObject
;
return
jsonViewObject
;
}
}
@Override
public
JsonViewObject
selectSchemeOptLogByParams
(
CrossSchemeQueryDTO
crossSchemeQueryDT
)
throws
Exception
{
String
crossId
=
crossSchemeQueryDT
.
getCrossId
();
String
pattern
=
crossSchemeQueryDT
.
getPattern
();
Date
datetime
=
crossSchemeQueryDT
.
getDatetime
();
long
time
=
datetime
.
getTime
();
SchemeOptLogPO
schemeOptLogPO
=
new
SchemeOptLogPO
();
List
<
CrossSchemeStageOptLogPO
>
beforeTimeList
=
crossSchemeStageOptLogMapper
.
getBeforeTimeList
(
crossId
,
pattern
,
time
);
List
<
CrossSchemeStageOptLogPO
>
afterTimeList
=
crossSchemeStageOptLogMapper
.
getAfterTimeList
(
crossId
,
pattern
,
time
);
schemeOptLogPO
.
setBeforeTime
(
beforeTimeList
);
schemeOptLogPO
.
setAfterTime
(
afterTimeList
);
return
JsonViewObject
.
newInstance
().
success
(
schemeOptLogPO
);
}
/**
/**
* @return net.wanji.databus.dao.entity.BaseCrossSchemePO
* @return net.wanji.databus.dao.entity.BaseCrossSchemePO
* @Description 获取方案号
* @Description 获取方案号
...
...
signal-utc-service/src/main/java/net/wanji/utc/task/SchemeUpdateTask.java
0 → 100644
View file @
70c81cea
package
net
.
wanji
.
utc
.
task
;
import
cn.hutool.core.util.ObjectUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.databus.dto.CrossSchedulesDTO
;
import
net.wanji.databus.dto.PlanSectionDTO
;
import
net.wanji.databus.dto.SchemePhaseLightsDTO
;
import
net.wanji.databus.po.CrossInfoPO
;
import
net.wanji.utc.cache.CrossInfoCache
;
import
net.wanji.utc.service.staticinfo.StaticInfoService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* 定时同步方案等静态信息
*
* @author zhouleilei
* @date 2024/12/25 13:01
*/
//@Component
@Slf4j
@SuppressWarnings
(
"all"
)
public
class
SchemeUpdateTask
{
@Autowired
StaticInfoService
staticInfoService
;
@Scheduled
(
cron
=
"0 30 0 * * ?"
)
public
void
runningStatusAlarm
()
throws
Exception
{
for
(
CrossInfoPO
crossInfoPO
:
CrossInfoCache
.
crossInfoList
)
{
if
(
ObjectUtil
.
isEmpty
(
crossInfoPO
.
getCode
()))
{
continue
;
}
Integer
manufacturerId
=
crossInfoPO
.
getManufacturerId
();
String
id
=
crossInfoPO
.
getId
();
//同步 方案数据-方案信息、相位信息、灯组信息
SchemePhaseLightsDTO
schemePhaseLightsDTO
=
new
SchemePhaseLightsDTO
();
schemePhaseLightsDTO
.
setCrossId
(
id
);
staticInfoService
.
schemePhaseLights
(
schemePhaseLightsDTO
);
//同步 计划数据-计划信息、时段信息
PlanSectionDTO
planSectionDTO
=
new
PlanSectionDTO
();
planSectionDTO
.
setCrossId
(
id
);
planSectionDTO
.
setPlanNo
(-
1
);
staticInfoService
.
planSection
(
planSectionDTO
);
//同步 时间表数据
CrossSchedulesDTO
crossSchedulesDTO
=
new
CrossSchedulesDTO
();
if
(
manufacturerId
==
22
)
{
//海信
crossSchedulesDTO
.
setManufacturerCode
(
"HISENSE"
);
}
else
if
(
manufacturerId
==
23
)
{
crossSchedulesDTO
.
setManufacturerCode
(
"EHUALU"
);
}
List
<
String
>
list
=
new
ArrayList
<>();
list
.
add
(
id
);
crossSchedulesDTO
.
setCrossIdList
(
list
);
staticInfoService
.
crossSchedules
(
crossSchedulesDTO
);
log
.
info
(
"路口 {} 定时同步完成"
,
id
);
}
}
}
wj-databus/src/main/java/net/wanji/databus/dao/mapper/CrossSchemeStageOptLogMapper.java
View file @
70c81cea
...
@@ -2,6 +2,9 @@ package net.wanji.databus.dao.mapper;
...
@@ -2,6 +2,9 @@ package net.wanji.databus.dao.mapper;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
net.wanji.databus.dao.entity.CrossSchemeStageOptLogPO
;
import
net.wanji.databus.dao.entity.CrossSchemeStageOptLogPO
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
/**
/**
* @ClassName CrossSchemeOptLogMapper
* @ClassName CrossSchemeOptLogMapper
...
@@ -10,4 +13,21 @@ import net.wanji.databus.dao.entity.CrossSchemeStageOptLogPO;
...
@@ -10,4 +13,21 @@ import net.wanji.databus.dao.entity.CrossSchemeStageOptLogPO;
* @Date 2024/11/23 14:34
* @Date 2024/11/23 14:34
*/
*/
public
interface
CrossSchemeStageOptLogMapper
extends
BaseMapper
<
CrossSchemeStageOptLogPO
>
{
public
interface
CrossSchemeStageOptLogMapper
extends
BaseMapper
<
CrossSchemeStageOptLogPO
>
{
/**
* @Description 根据路口号,方案号查询时间戳30分钟前的数据
* @Param [crossId, pattern, timeStamp]
* @return java.util.List<net.wanji.databus.dao.entity.CrossSchemeStageOptLogPO>
**/
List
<
CrossSchemeStageOptLogPO
>
getBeforeTimeList
(
@Param
(
"crossId"
)
String
crossId
,
@Param
(
"pattern"
)
String
pattern
,
@Param
(
"timeStamp"
)
long
timeStamp
);
/**
* @Description 根据路口号,方案号查询时间戳30分钟后的数据
* @Param [crossId, pattern, timeStamp]
* @return java.util.List<net.wanji.databus.dao.entity.CrossSchemeStageOptLogPO>
**/
List
<
CrossSchemeStageOptLogPO
>
getAfterTimeList
(
@Param
(
"crossId"
)
String
crossId
,
@Param
(
"pattern"
)
String
pattern
,
@Param
(
"timeStamp"
)
long
timeStamp
);
}
}
wj-databus/src/main/java/net/wanji/databus/dto/CrossSchemeQueryDTO.java
0 → 100644
View file @
70c81cea
package
net
.
wanji
.
databus
.
dto
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.Valid
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.Pattern
;
import
java.util.Date
;
/**
* @ClassName CrossSchemeRings
* @Description 5.15. 方案环图请求
* @Author zhouleilei
* @Date 2024/11/5 10:37
*/
@Data
@Valid
@ApiModel
(
value
=
"查询临时方案参数"
,
description
=
""
)
public
class
CrossSchemeQueryDTO
{
@ApiModelProperty
(
value
=
"路口ID"
)
@Pattern
(
regexp
=
"^[A-Za-z0-9]{11}$"
,
message
=
"路口编号只能包含英文、数字,必须11个字符"
)
@NotNull
(
message
=
"crossId不能为空"
)
private
String
crossId
;
@ApiModelProperty
(
value
=
"方案号"
)
@NotNull
(
message
=
"pattern 不能为空"
)
private
String
pattern
;
@ApiModelProperty
(
value
=
"查询时间 yyyy-MM-dd HH:mm:ss"
,
required
=
true
)
@NotNull
(
message
=
"datetime不可为空"
)
@JsonFormat
(
shape
=
JsonFormat
.
Shape
.
STRING
,
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
datetime
;
}
wj-databus/src/main/java/net/wanji/databus/po/CrossDataRealtimePO.java
View file @
70c81cea
...
@@ -234,4 +234,11 @@ public class CrossDataRealtimePO {
...
@@ -234,4 +234,11 @@ public class CrossDataRealtimePO {
private
Integer
emptyPass
;
private
Integer
emptyPass
;
@TableField
(
"service_level"
)
@TableField
(
"service_level"
)
private
String
serviceLevel
;
private
String
serviceLevel
;
/**
* add 20250107 事件
*/
@ApiModelProperty
(
value
=
"事件方向"
,
notes
=
""
)
private
Integer
direction
;
@ApiModelProperty
(
value
=
"事件转向"
,
notes
=
""
)
private
Integer
turn
;
}
}
wj-databus/src/main/java/net/wanji/databus/po/SchemeOptLogPO.java
0 → 100644
View file @
70c81cea
package
net
.
wanji
.
databus
.
po
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
net.wanji.databus.dao.entity.CrossSchemeStageOptLogPO
;
import
java.util.List
;
/**
* @ClassName SchemeOptLogPO
* @Description TODO
* @Author zhouleilei
* @Date 2025/1/7 18:56
*/
@Data
@ApiModel
(
value
=
"查询方案对比参数"
,
description
=
""
)
public
class
SchemeOptLogPO
{
@ApiModelProperty
(
value
=
"指定时间之前的数据"
)
private
List
<
CrossSchemeStageOptLogPO
>
beforeTime
;
@ApiModelProperty
(
value
=
"指定时间之后的数据"
)
private
List
<
CrossSchemeStageOptLogPO
>
afterTime
;
}
wj-databus/src/main/resources/mapper/CrossDataHistMapper.xml
View file @
70c81cea
...
@@ -52,6 +52,9 @@
...
@@ -52,6 +52,9 @@
<result
column=
"optimize_seconds"
property=
"optimizeSeconds"
></result>
<result
column=
"optimize_seconds"
property=
"optimizeSeconds"
></result>
<result
column=
"empty_pass"
property=
"emptyPass"
></result>
<result
column=
"empty_pass"
property=
"emptyPass"
></result>
<result
column=
"service_level"
property=
"serviceLevel"
></result>
<result
column=
"service_level"
property=
"serviceLevel"
></result>
<!-- add 20250107 事件方向转向 -->
<result
column=
"direction"
property=
"direction"
></result>
<result
column=
"turn"
property=
"turn"
></result>
</resultMap>
</resultMap>
<sql
id=
"Base_Column_List"
>
<sql
id=
"Base_Column_List"
>
...
@@ -61,7 +64,8 @@
...
@@ -61,7 +64,8 @@
clear_rate,load_balance,not_clear_car_nums,green_light_efficiency,effusion_rate,
clear_rate,load_balance,not_clear_car_nums,green_light_efficiency,effusion_rate,
no_stop_rate,one_stop_rate,two_stop_rate,three_stop_rate,non_motor_flow,v_85,
no_stop_rate,one_stop_rate,two_stop_rate,three_stop_rate,non_motor_flow,v_85,
traffic_flow_A,traffic_flow_B,traffic_flow_C,vehicle_length_ratio_mean,time_occupancy,
traffic_flow_A,traffic_flow_B,traffic_flow_C,vehicle_length_ratio_mean,time_occupancy,
strategy, strategy_duration, optimize_count, optimize_seconds, empty_pass, service_level
strategy, strategy_duration, optimize_count, optimize_seconds, empty_pass, service_level,
direction, turn
</sql>
</sql>
<insert
id=
"insertBatch"
parameterType=
"net.wanji.databus.po.CrossDataHistPO"
>
<insert
id=
"insertBatch"
parameterType=
"net.wanji.databus.po.CrossDataHistPO"
>
...
@@ -77,7 +81,7 @@
...
@@ -77,7 +81,7 @@
#{entity.nonMotorFlow},#{entity.v85},#{entity.trafficFlowA},#{entity.trafficFlowB},
#{entity.nonMotorFlow},#{entity.v85},#{entity.trafficFlowA},#{entity.trafficFlowB},
#{entity.trafficFlowC},#{entity.vehicleLengthRatioMean},#{entity.timeOccupancy},
#{entity.trafficFlowC},#{entity.vehicleLengthRatioMean},#{entity.timeOccupancy},
#{entity.strategy}, #{entity.strategyDuration}, #{entity.optimizeCount}, #{entity.optimizeSeconds},
#{entity.strategy}, #{entity.strategyDuration}, #{entity.optimizeCount}, #{entity.optimizeSeconds},
#{entity.emptyPass}, #{entity.serviceLevel}
#{entity.emptyPass}, #{entity.serviceLevel}
, #{entity.direction}, #{entity.turn}
)
)
</foreach>
</foreach>
</insert>
</insert>
...
...
wj-databus/src/main/resources/mapper/CrossDataRealtimeMapper.xml
View file @
70c81cea
...
@@ -52,6 +52,9 @@
...
@@ -52,6 +52,9 @@
<result
column=
"empty_pass"
property=
"emptyPass"
></result>
<result
column=
"empty_pass"
property=
"emptyPass"
></result>
<result
column=
"strategy"
property=
"strategy"
></result>
<result
column=
"strategy"
property=
"strategy"
></result>
<result
column=
"service_level"
property=
"serviceLevel"
></result>
<result
column=
"service_level"
property=
"serviceLevel"
></result>
<!-- add 20250107 事件方向转向 -->
<result
column=
"direction"
property=
"direction"
></result>
<result
column=
"turn"
property=
"turn"
></result>
</resultMap>
</resultMap>
<sql
id=
"Base_Column_List"
>
<sql
id=
"Base_Column_List"
>
...
@@ -61,7 +64,8 @@
...
@@ -61,7 +64,8 @@
load_balance,not_clear_car_nums,green_light_efficiency,effusion_rate,
load_balance,not_clear_car_nums,green_light_efficiency,effusion_rate,
no_stop_rate,one_stop_rate,two_stop_rate,three_stop_rate,non_motor_flow,v_85,
no_stop_rate,one_stop_rate,two_stop_rate,three_stop_rate,non_motor_flow,v_85,
traffic_flow_A,traffic_flow_B,traffic_flow_C,vehicle_length_ratio_mean,time_occupancy,
traffic_flow_A,traffic_flow_B,traffic_flow_C,vehicle_length_ratio_mean,time_occupancy,
strategy, strategy_duration, optimize_count, optimize_seconds, empty_pass, service_level
strategy, strategy_duration, optimize_count, optimize_seconds, empty_pass, service_level,
direction, turn
</sql>
</sql>
<insert
id=
"insertBatch"
parameterType=
"net.wanji.databus.po.CrossDataRealtimePO"
>
<insert
id=
"insertBatch"
parameterType=
"net.wanji.databus.po.CrossDataRealtimePO"
>
...
@@ -77,7 +81,7 @@
...
@@ -77,7 +81,7 @@
#{entity.nonMotorFlow},#{entity.v85},#{entity.trafficFlowA},#{entity.trafficFlowB},#{entity.trafficFlowC},
#{entity.nonMotorFlow},#{entity.v85},#{entity.trafficFlowA},#{entity.trafficFlowB},#{entity.trafficFlowC},
#{entity.vehicleLengthRatioMean},#{entity.timeOccupancy},
#{entity.vehicleLengthRatioMean},#{entity.timeOccupancy},
#{entity.strategy}, #{entity.strategyDuration}, #{entity.optimizeCount}, #{entity.optimizeSeconds}, #{entity.emptyPass},
#{entity.strategy}, #{entity.strategyDuration}, #{entity.optimizeCount}, #{entity.optimizeSeconds}, #{entity.emptyPass},
#{entity.serviceLevel}
#{entity.serviceLevel}
, #{entity.direction}, #{entity.turn}
)
)
</foreach>
</foreach>
</insert>
</insert>
...
...
wj-databus/src/main/resources/mapper/CrossSchemeStageOptLogMapper.xml
View file @
70c81cea
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"net.wanji.databus.dao.mapper.CrossSchemeStageOptLogMapper"
>
<mapper
namespace=
"net.wanji.databus.dao.mapper.CrossSchemeStageOptLogMapper"
>
<select
id=
"getBeforeTimeList"
resultType=
"net.wanji.databus.dao.entity.CrossSchemeStageOptLogPO"
>
SELECT *
FROM t_cross_scheme_opt_log
WHERE
batch_time = (
SELECT MAX(batch_time) FROM t_cross_scheme_opt_log
WHERE cross_id = #{crossId} AND scheme_id = #{pattern}
AND batch_time >= (#{timeStamp}-30*60*1000) AND batch_time
<
#{timeStamp})
</select>
<select
id=
"getAfterTimeList"
resultType=
"net.wanji.databus.dao.entity.CrossSchemeStageOptLogPO"
>
SELECT *
FROM t_cross_scheme_opt_log
WHERE
batch_time = (
SELECT MIN(batch_time) FROM t_cross_scheme_opt_log
WHERE cross_id = #{crossId} AND scheme_id = #{pattern}
AND batch_time >= (#{timeStamp}) AND batch_time
<
(#{timeStamp}+30*60*1000))
</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