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
ef32802d
Commit
ef32802d
authored
Jan 07, 2025
by
zhouleilei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[add]智慧大屏,新增优化对比
parent
5deaf475
Changes
17
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
454 additions
and
14 deletions
+454
-14
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
+166
-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
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
CommandFaildTask.java
...ce/src/main/java/net/wanji/utc/task/CommandFaildTask.java
+1
-2
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
SchemeOptLogPO.java
...us/src/main/java/net/wanji/databus/po/SchemeOptLogPO.java
+24
-0
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 @
ef32802d
...
...
@@ -147,6 +147,19 @@ public class PlanSendController {
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
)
@ApiOperation
(
value
=
"下发数据到UTC"
,
notes
=
"下发数据到UTC"
)
@PostMapping
(
"/saveToUtc"
)
...
...
signal-control-service/src/main/java/net/wanji/web/service/PlanSendService.java
View file @
ef32802d
...
...
@@ -33,6 +33,7 @@ public interface PlanSendService {
// RingPhasePO phaseListByTimeSingleRing(CrossIdAndTimeDTO crossIdAndTimeDTO);
RingPhasePO
phaseListByTimeSingleRingNew
(
CrossIdAndTimeDTO
crossIdAndTimeDTO
);
RingPhasePO
phaseListByTimeRingNew
(
CrossIdAndTimeDTO
crossIdAndTimeDTO
);
List
<
SaveSchemeConfigDTO
.
PhaseListElement
>
phaseListByTimeSingleRing
(
CrossIdAndTimeDTO
crossIdAndTimeDTO
);
/**
...
...
signal-control-service/src/main/java/net/wanji/web/service/impl/PlanSendServiceImpl.java
View file @
ef32802d
...
...
@@ -15,10 +15,7 @@ import net.wanji.databus.bo.CrossIdBO;
import
net.wanji.databus.dao.entity.*
;
import
net.wanji.databus.dao.mapper.*
;
import
net.wanji.databus.dto.*
;
import
net.wanji.databus.po.BaseCrossLightsPO
;
import
net.wanji.databus.po.CrossBaseLaneInfoPO
;
import
net.wanji.databus.po.CrossLaneLightsPO
;
import
net.wanji.databus.po.SaveToUtcPO
;
import
net.wanji.databus.po.*
;
import
net.wanji.databus.vo.*
;
import
net.wanji.feign.service.UtcFeignClients
;
import
net.wanji.web.common.enums.CrossDirChangeEnum
;
...
...
@@ -41,7 +38,6 @@ import javax.validation.constraints.NotNull;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
/**
* @author Kent HAN
...
...
@@ -728,15 +724,19 @@ public class PlanSendServiceImpl implements PlanSendService {
if
(
schemeId
==
85
){
return
ringPhasePO
;
}
CrossIdBO
crossIdBO
=
new
CrossIdBO
();
/*
CrossIdBO crossIdBO = new CrossIdBO();
crossIdBO.setCrossId(crossIdAndTimeDTO.getCrossId());
SaveSchemeConfigDTO saveSchemeConfigDTO = schemeConfigServiceImpl.listSchemeConfig(crossIdBO);
List<SaveSchemeConfigDTO.PhaseScheme> phaseSchemeList = saveSchemeConfigDTO.getPhaseSchemeList();
*/
List
<
SaveSchemeConfigDTO
.
PhaseScheme
>
phaseSchemeList
=
schemeConfigServiceImpl
.
buildPhaseSchemeListByCrossIdAndSchemeNo
(
crossIdAndTimeDTO
.
getCrossId
(),
String
.
valueOf
(
schemeId
));
if
(
ObjectUtil
.
isEmpty
(
phaseSchemeList
)){
return
ringPhasePO
;
}
List
<
SaveSchemeConfigDTO
.
PhaseScheme
>
collected
=
phaseSchemeList
.
stream
().
filter
(
x
->
x
.
getSchemeNo
().
equals
(
content
.
getSchemeNo
())).
collect
(
Collectors
.
toList
());
SaveSchemeConfigDTO
.
PhaseScheme
phaseScheme
=
collected
.
get
(
0
);
/*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
=
phaseSchemeList
.
get
(
0
);
SaveSchemeConfigDTO
.
RingListElement
ringListElement
=
phaseScheme
.
getRingList
().
get
(
0
);
List
<
SaveSchemeConfigDTO
.
GroupListElement
>
groupList
=
ringListElement
.
getGroupList
();
SaveSchemeConfigDTO
.
GroupListElement
groupListElement
=
groupList
.
get
(
0
);
...
...
@@ -796,6 +796,164 @@ public class PlanSendServiceImpl implements PlanSendService {
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
);
}
}
/* List<CrossSchemeStageOptLogPO> crossSchedulesPOList = mapper.convertValue(optView.getContent(), new TypeReference<List<CrossSchemeStageOptLogPO>>() {
});
if (ObjectUtils.isNotEmpty(crossSchedulesPOList)) {
for (int i = 0; i < crossSchedulesPOList.size(); i++) {
if (i == oriPhaseList.size()){
break;
}
CrossSchemeStageOptLogPO optLogPO = crossSchedulesPOList.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);
}
}*/
}
}
ringPhasePO
.
setOriPhaseList
(
oriPhaseList
);
ringPhasePO
.
setOptPhaseList
(
optPhaseList
);
return
ringPhasePO
;
}
@Override
public
List
<
SaveSchemeConfigDTO
.
PhaseListElement
>
phaseListByTimeSingleRing
(
CrossIdAndTimeDTO
crossIdAndTimeDTO
)
{
List
<
SaveSchemeConfigDTO
.
PhaseListElement
>
phaseListByTime
=
new
ArrayList
<>();
...
...
signal-control-service/src/main/java/net/wanji/web/service/scheme/impl/SchemeConfigServiceImpl.java
View file @
ef32802d
...
...
@@ -236,6 +236,45 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
}
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 @
ef32802d
...
...
@@ -150,4 +150,8 @@ public interface FeignCommon {
@PostMapping
(
"/staticInfo/selectSchemeByParams"
)
JsonViewObject
selectSchemeByParams
(
@RequestBody
QueryByCrossIdAndTimeDTO
queryByCrossIdAndTimeDTO
);
// 根据条件查询临时方案下发日志
@PostMapping
(
"/staticInfo/selectCrossSchemeOptLogByParams"
)
JsonViewObject
selectCrossSchemeOptLogByParams
(
@RequestBody
CrossSchemeQueryDTO
crossSchemeQueryDT
);
}
signal-utc-service/src/main/java/net/wanji/utc/config/ScheduledConfig.java
0 → 100644
View file @
ef32802d
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 @
ef32802d
...
...
@@ -186,6 +186,15 @@ public class StaticInfoController {
public
JsonViewObject
selectSchemeByParams
(
@Validated
@RequestBody
QueryByCrossIdAndTimeDTO
queryByCrossIdAndTimeDTO
)
throws
Exception
{
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 @
ef32802d
...
...
@@ -33,5 +33,6 @@ public interface StaticInfoService {
JsonViewObject
crossSchemeRings
(
CrossSchemeRingsDTO
crossSchemeRingsDTO
)
throws
Exception
;
JsonViewObject
schemeOptLog
(
CrossSchemeRingsDTO
crossSchemeRingsDTO
)
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 @
ef32802d
...
...
@@ -2,6 +2,7 @@ package net.wanji.utc.service.staticinfo;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.databus.dao.entity.CrossSchedulesPO
;
import
net.wanji.databus.dto.CrossSchemeQueryDTO
;
import
net.wanji.databus.dto.CrossSchemeRingsDTO
;
import
net.wanji.databus.dto.QueryByCrossIdAndTimeDTO
;
import
net.wanji.utc.common.Result
;
...
...
@@ -56,4 +57,6 @@ public interface WanJiCommonStaticInfoService {
JsonViewObject
crossSchemeRings
(
CrossSchemeRingsDTO
crossSchemeRingsDTO
)
throws
Exception
;
JsonViewObject
schemeOptLog
(
CrossSchemeRingsDTO
crossSchemeRingsDTO
)
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 @
ef32802d
...
...
@@ -244,4 +244,11 @@ public class StaticInfoServiceImpl implements StaticInfoService {
jsonViewObject
=
wanjiCommonStaticInfoService
.
selectSchemeByParams
(
queryByCrossIdAndTimeDTO
);
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 @
ef32802d
...
...
@@ -14,11 +14,9 @@ import net.wanji.common.utils.tool.LocalDateTimeUtil;
import
net.wanji.common.utils.tool.StringUtils
;
import
net.wanji.databus.dao.entity.*
;
import
net.wanji.databus.dao.mapper.*
;
import
net.wanji.databus.dto.CrossSchedulesDTO
;
import
net.wanji.databus.dto.CrossSchemeRingsDTO
;
import
net.wanji.databus.dto.PlanSectionDTO
;
import
net.wanji.databus.dto.QueryByCrossIdAndTimeDTO
;
import
net.wanji.databus.dto.*
;
import
net.wanji.databus.po.CrossSchemeRings
;
import
net.wanji.databus.po.SchemeOptLogPO
;
import
net.wanji.databus.vo.CrossIdVO
;
import
net.wanji.databus.vo.PlanSectionVO
;
import
net.wanji.databus.vo.SchemePhaseLightsVO
;
...
...
@@ -378,6 +376,20 @@ public class WanJiCommonStaticInfoServiceImpl implements WanJiCommonStaticInfoSe
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
* @Description 获取方案号
...
...
signal-utc-service/src/main/java/net/wanji/utc/task/CommandFaildTask.java
View file @
ef32802d
...
...
@@ -20,7 +20,6 @@ import net.wanji.utc.service.control.ControlCommandService;
import
net.wanji.utc.service.control.ControlCommandStrategyService
;
import
net.wanji.utc.util.StringUtils
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
import
java.util.List
;
...
...
@@ -32,7 +31,7 @@ import java.util.concurrent.ConcurrentHashMap;
* @author zhouleilei
* @date 2024/12/30 14:01
*/
@Component
//
@Component
@Slf4j
@SuppressWarnings
(
"all"
)
public
class
CommandFaildTask
{
...
...
signal-utc-service/src/main/java/net/wanji/utc/task/SchemeUpdateTask.java
0 → 100644
View file @
ef32802d
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 @
ef32802d
...
...
@@ -2,6 +2,9 @@ package net.wanji.databus.dao.mapper;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
net.wanji.databus.dao.entity.CrossSchemeStageOptLogPO
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
/**
* @ClassName CrossSchemeOptLogMapper
...
...
@@ -10,4 +13,21 @@ import net.wanji.databus.dao.entity.CrossSchemeStageOptLogPO;
* @Date 2024/11/23 14:34
*/
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 @
ef32802d
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/SchemeOptLogPO.java
0 → 100644
View file @
ef32802d
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/CrossSchemeStageOptLogMapper.xml
View file @
ef32802d
<?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">
<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>
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