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
69a0745d
Commit
69a0745d
authored
Jan 12, 2023
by
duanruiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
信号机控制指令-万集统一标准服务
parent
cc4dce64
Changes
18
Show whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
845 additions
and
489 deletions
+845
-489
ControlCommandController.java
...va/net/wanji/utc/controller/ControlCommandController.java
+40
-39
ControlCommandService.java
.../net/wanji/utc/service/control/ControlCommandService.java
+19
-18
ControlCommandStrategyService.java
...ji/utc/service/control/ControlCommandStrategyService.java
+83
-0
ControlCommandStrategyServiceImpl.java
...rvice/control/impl/ControlCommandStrategyServiceImpl.java
+274
-0
HKControlCommandServiceImpl.java
...utc/service/control/impl/HKControlCommandServiceImpl.java
+276
-413
WanJiControlCommandServiceImpl.java
.../service/control/impl/WanJiControlCommandServiceImpl.java
+118
-0
RpcService.java
...e/src/main/java/net/wanji/utc/service/rpc/RpcService.java
+2
-2
WanJiCommonRunningStatusService.java
.../service/runninginfo/WanJiCommonRunningStatusService.java
+2
-2
SignalStatusServiceImpl.java
...utc/service/runninginfo/impl/SignalStatusServiceImpl.java
+2
-2
WanJiCommonRunningStatusServiceImpl.java
...runninginfo/impl/WanJiCommonRunningStatusServiceImpl.java
+3
-3
WanJiCommonStaticInfoService.java
.../utc/service/staticinfo/WanJiCommonStaticInfoService.java
+2
-2
StaticInfoServiceImpl.java
...ji/utc/service/staticinfo/impl/StaticInfoServiceImpl.java
+2
-2
WanJiCommonStaticInfoServiceImpl.java
...ice/staticinfo/impl/WanJiCommonStaticInfoServiceImpl.java
+3
-3
ControlCommandVO.java
...vice/src/main/java/net/wanji/utc/vo/ControlCommandVO.java
+3
-2
PhaseTimingSendVO.java
...ice/src/main/java/net/wanji/utc/vo/PhaseTimingSendVO.java
+4
-0
PlanSendVO.java
...tc-service/src/main/java/net/wanji/utc/vo/PlanSendVO.java
+4
-1
ScheduleSendVO.java
...ervice/src/main/java/net/wanji/utc/vo/ScheduleSendVO.java
+4
-0
SchemeSendVO.java
...-service/src/main/java/net/wanji/utc/vo/SchemeSendVO.java
+4
-0
No files found.
signal-utc-service/src/main/java/net/wanji/utc/controller/ControlCommandController.java
View file @
69a0745d
...
@@ -4,11 +4,11 @@ import io.swagger.annotations.Api;
...
@@ -4,11 +4,11 @@ import io.swagger.annotations.Api;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.utc.
common.Resul
t
;
import
net.wanji.utc.
entity.JsonViewObjec
t
;
import
net.wanji.utc.service.control.ControlCommandService
;
import
net.wanji.utc.service.control.ControlCommandS
trategyS
ervice
;
import
net.wanji.utc.vo.*
;
import
net.wanji.utc.vo.*
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
...
@@ -23,98 +23,99 @@ import static net.wanji.utc.common.constant.Constants.*;
...
@@ -23,98 +23,99 @@ import static net.wanji.utc.common.constant.Constants.*;
@Slf4j
@Slf4j
@RestController
@RestController
@RequestMapping
(
"/controlCommand"
)
@RequestMapping
(
"/controlCommand"
)
@RequiredArgsConstructor
@Api
(
value
=
"控制指令接口"
,
description
=
"控制指令接口"
,
tags
=
"控制指令接口"
)
@Api
(
value
=
"控制指令接口"
,
description
=
"控制指令接口"
,
tags
=
"控制指令接口"
)
public
class
ControlCommandController
{
public
class
ControlCommandController
{
@Autowired
private
final
ControlCommandStrategyService
controlCommandStrategyService
;
private
ControlCommandService
hkControlCommandService
;
/**
/**
* 信号机方案下发
* 信号机方案下发
*
*
* @param schemeSendVO 方案下发VO
* @param schemeSendVO 方案下发VO
* @return
{@link Result}<{@link T}>
* @return
*/
*/
@ApiOperation
(
value
=
"信号机方案下发-基础方案下发"
,
notes
=
"信号机方案下发-基础方案下发"
)
@ApiOperation
(
value
=
"信号机方案下发-基础方案下发"
,
notes
=
"信号机方案下发-基础方案下发"
)
@PostMapping
(
"/schemeSend"
)
@PostMapping
(
"/schemeSend"
)
public
<
T
>
Result
<
T
>
schemeSend
(
@RequestBody
SchemeSendVO
schemeSendVO
)
throws
Exception
{
public
JsonViewObject
schemeSend
(
@RequestBody
@Validated
SchemeSendVO
schemeSendVO
)
throws
Exception
{
return
hkControlCommandService
.
schemeSend
(
schemeSendVO
);
return
controlCommandStrategyService
.
schemeSendStrategy
(
schemeSendVO
);
}
}
/**
/**
* 下发信号机计划
* 下发信号机计划
*
*
* @param planSendVO 计划下发VO
* @param planSendVO 计划下发VO
* @return
{@link Result}<{@link T}>
* @return
*/
*/
@ApiOperation
(
value
=
"计划下发-计划信息、时段信息"
,
notes
=
"计划下发-计划信息、时段信息"
)
@ApiOperation
(
value
=
"计划下发-计划信息、时段信息"
,
notes
=
"计划下发-计划信息、时段信息"
)
@PostMapping
(
"/planSend"
)
@PostMapping
(
"/planSend"
)
public
<
T
>
Result
<
T
>
planSend
(
@RequestBody
PlanSendVO
planSendVO
)
throws
Exception
{
public
JsonViewObject
planSend
(
@RequestBody
PlanSendVO
planSendVO
)
throws
Exception
{
return
hkControlCommandService
.
planSend
(
planSendVO
);
return
controlCommandStrategyService
.
planSendStrategy
(
planSendVO
);
}
}
/**
/**
* 时间表下发
* 时间表下发
*
*
* @param scheduleSendVO 时间表下发VO
* @param scheduleSendVO 时间表下发VO
* @return
{@link Result}<{@link T}>
* @return
* @throws Exception 异常
* @throws Exception 异常
*/
*/
@ApiOperation
(
value
=
"时间表下发-时间表信息"
,
notes
=
"时间表下发-时间表信息"
)
@ApiOperation
(
value
=
"时间表下发-时间表信息"
,
notes
=
"时间表下发-时间表信息"
)
@PostMapping
(
"/scheduleSend"
)
@PostMapping
(
"/scheduleSend"
)
public
<
T
>
Result
<
T
>
scheduleSend
(
@RequestBody
ScheduleSendVO
scheduleSendVO
)
throws
Exception
{
public
JsonViewObject
scheduleSend
(
@RequestBody
ScheduleSendVO
scheduleSendVO
)
throws
Exception
{
return
hkControlCommandService
.
scheduleSend
(
scheduleSendVO
);
return
controlCommandStrategyService
.
scheduleSendStrategy
(
scheduleSendVO
);
}
}
/**
/**
* 相位配时下发-(下发相位参数)
* 相位配时下发-(下发相位参数)
*
*
* @return
{@link Result}<{@link T}>
* @return
* @throws InterruptedException 中断异常
* @throws InterruptedException 中断异常
*/
*/
@ApiOperation
(
value
=
"相位配时下发-(下发相位参数)"
,
notes
=
"相位配时下发-(下发相位参数)"
)
@ApiOperation
(
value
=
"相位配时下发-(下发相位参数)"
,
notes
=
"相位配时下发-(下发相位参数)"
)
@PostMapping
(
"/phaseTimingSend"
)
@PostMapping
(
"/phaseTimingSend"
)
public
<
T
>
Result
<
T
>
phaseTimingSend
(
@RequestBody
PhaseTimingSendVO
phaseTimingSendVO
)
throws
Exception
{
public
JsonViewObject
phaseTimingSend
(
@RequestBody
PhaseTimingSendVO
phaseTimingSendVO
)
throws
Exception
{
return
hkControlCommandService
.
phaseTimingSend
(
phaseTimingSendVO
);
return
controlCommandStrategyService
.
phaseTimingSendStrategy
(
phaseTimingSendVO
);
}
}
/**
/**
* 全红控制
* 全红控制
*
*
* @param commandVO 控制指令VO
* @param commandVO 控制指令VO
* @return
{@link Result}<{@link T}>
* @return
* @throws Exception 异常
* @throws Exception 异常
*/
*/
@ApiOperation
(
value
=
"全红控制-路口全红控制/恢复"
,
notes
=
"全红控制-路口全红控制/恢复"
)
@ApiOperation
(
value
=
"全红控制-路口全红控制/恢复"
,
notes
=
"全红控制-路口全红控制/恢复"
)
@PostMapping
(
"/allRedControl"
)
@PostMapping
(
"/allRedControl"
)
public
<
T
>
Result
<
T
>
allRedControl
(
@RequestBody
@Validated
ControlCommandVO
commandVO
)
throws
Exception
{
public
JsonViewObject
allRedControl
(
@RequestBody
@Validated
ControlCommandVO
commandVO
)
throws
Exception
{
return
hkControlCommandService
.
setSignalControl
(
commandVO
.
getCrossCode
(),
commandVO
.
getCommand
(),
ALL_RED_CONTROL
);
return
controlCommandStrategyService
.
setSignalControlStrategy
(
commandVO
.
getCrossCode
(),
commandVO
.
getCommand
(),
ALL_RED_CONTROL
);
}
}
/**
/**
* 黄闪控制
* 黄闪控制
*
*
* @param commandVO 控制指令VO
* @param commandVO 控制指令VO
* @return
{@link Result}<{@link T}>
* @return
* @throws Exception 异常
* @throws Exception 异常
*/
*/
@ApiOperation
(
value
=
"黄闪控制-路口黄闪控制/恢复"
,
notes
=
"黄闪控制-路口黄闪控制/恢复"
)
@ApiOperation
(
value
=
"黄闪控制-路口黄闪控制/恢复"
,
notes
=
"黄闪控制-路口黄闪控制/恢复"
)
@PostMapping
(
"/yellowLightControl"
)
@PostMapping
(
"/yellowLightControl"
)
public
<
T
>
Result
<
T
>
yellowLightControl
(
@RequestBody
@Validated
ControlCommandVO
commandVO
)
throws
Exception
{
public
JsonViewObject
yellowLightControl
(
@RequestBody
@Validated
ControlCommandVO
commandVO
)
throws
Exception
{
return
hkControlCommandService
.
setSignalControl
(
commandVO
.
getCrossCode
(),
commandVO
.
getCommand
(),
YELLOW_LIGHT_CONTROL
);
return
controlCommandStrategyService
.
setSignalControlStrategy
(
commandVO
.
getCrossCode
(),
commandVO
.
getCommand
(),
YELLOW_LIGHT_CONTROL
);
}
}
/**
/**
* 关灯控制
* 关灯控制
*
*
* @param commandVO 控制指令VO
* @param commandVO 控制指令VO
* @return
{@link Result}<{@link T}>
* @return
* @throws Exception 异常
* @throws Exception 异常
*/
*/
@ApiOperation
(
value
=
"关灯控制-路口关灯控制/开灯"
,
notes
=
"关灯控制-路口关灯控制/开灯"
)
@ApiOperation
(
value
=
"关灯控制-路口关灯控制/开灯"
,
notes
=
"关灯控制-路口关灯控制/开灯"
)
@PostMapping
(
"/closeLightControl"
)
@PostMapping
(
"/closeLightControl"
)
public
<
T
>
Result
<
T
>
closeLightControl
(
@RequestBody
@Validated
ControlCommandVO
commandVO
)
throws
Exception
{
public
JsonViewObject
closeLightControl
(
@RequestBody
@Validated
ControlCommandVO
commandVO
)
throws
Exception
{
return
hkControlCommandService
.
setSignalControl
(
commandVO
.
getCrossCode
(),
commandVO
.
getCommand
(),
CLOSE_LIGHT_CONTROL
);
return
controlCommandStrategyService
.
setSignalControlStrategy
(
commandVO
.
getCrossCode
(),
commandVO
.
getCommand
(),
CLOSE_LIGHT_CONTROL
);
}
}
/**
/**
...
@@ -123,7 +124,7 @@ public class ControlCommandController {
...
@@ -123,7 +124,7 @@ public class ControlCommandController {
* @param code 信号id
* @param code 信号id
* @param command 命令
* @param command 命令
* @param stepNum 一步num
* @param stepNum 一步num
* @return
{@link Result}<{@link T}>
* @return
*/
*/
@ApiOperation
(
value
=
"步进控制-步进控制/恢复"
,
notes
=
"步进控制-步进控制/恢复"
)
@ApiOperation
(
value
=
"步进控制-步进控制/恢复"
,
notes
=
"步进控制-步进控制/恢复"
)
@ApiImplicitParams
({
@ApiImplicitParams
({
...
@@ -131,35 +132,35 @@ public class ControlCommandController {
...
@@ -131,35 +132,35 @@ public class ControlCommandController {
@ApiImplicitParam
(
name
=
"stepNum"
,
value
=
"0 顺序步进 n 跳过n个相位"
,
paramType
=
"query"
,
required
=
true
,
dataType
=
"int"
),
@ApiImplicitParam
(
name
=
"stepNum"
,
value
=
"0 顺序步进 n 跳过n个相位"
,
paramType
=
"query"
,
required
=
true
,
dataType
=
"int"
),
})
})
@PostMapping
(
"/stepControl"
)
@PostMapping
(
"/stepControl"
)
public
<
T
>
Result
<
T
>
stepControl
(
@RequestParam
String
code
,
public
JsonViewObject
stepControl
(
@RequestParam
String
code
,
@RequestParam
Integer
command
,
@RequestParam
Integer
command
,
@RequestParam
int
stepNum
)
throws
Exception
{
@RequestParam
int
stepNum
)
throws
Exception
{
return
hkControlCommandService
.
stepControl
(
code
,
command
,
stepNum
);
return
controlCommandStrategyService
.
stepControlStrategy
(
code
,
command
,
stepNum
);
}
}
/**
/**
* 恢复时间表
* 恢复时间表
*
*
* @param code 信号id
* @param code 信号id
* @return
{@link Result}<{@link T}>
* @return
*/
*/
@ApiOperation
(
value
=
"恢复时间表-恢复路口时间表执行"
,
notes
=
"恢复时间表-恢复路口时间表执行"
)
@ApiOperation
(
value
=
"恢复时间表-恢复路口时间表执行"
,
notes
=
"恢复时间表-恢复路口时间表执行"
)
@PostMapping
(
"/recoverSchedule"
)
@PostMapping
(
"/recoverSchedule"
)
public
<
T
>
Result
<
T
>
recoverSchedule
(
@RequestParam
String
code
)
throws
Exception
{
public
JsonViewObject
recoverSchedule
(
@RequestParam
String
code
)
throws
Exception
{
return
hkControlCommandService
.
recoverSchedule
(
code
);
return
controlCommandStrategyService
.
recoverScheduleStrategy
(
code
);
}
}
/**
/**
* 锁定控制
* 锁定控制
*
*
* @param commandVO 控制指令VO
* @param commandVO 控制指令VO
* @return
{@link Result}<{@link T}>
* @return
* @throws Exception 异常
* @throws Exception 异常
*/
*/
@ApiOperation
(
value
=
"锁定控制-相位锁定/解锁"
,
notes
=
"锁定控制-相位锁定/解锁"
)
@ApiOperation
(
value
=
"锁定控制-相位锁定/解锁"
,
notes
=
"锁定控制-相位锁定/解锁"
)
@PostMapping
(
"/lockControl"
)
@PostMapping
(
"/lockControl"
)
public
<
T
>
Result
<
T
>
lockControl
(
@RequestBody
@Validated
ControlCommandVO
commandVO
)
throws
Exception
{
public
JsonViewObject
lockControl
(
@RequestBody
@Validated
ControlCommandVO
commandVO
)
throws
Exception
{
return
hkControlCommandService
.
lockControl
(
commandVO
);
return
controlCommandStrategyService
.
lockControlStrategy
(
commandVO
);
}
}
/**
/**
...
@@ -167,7 +168,7 @@ public class ControlCommandController {
...
@@ -167,7 +168,7 @@ public class ControlCommandController {
*/
*/
@ApiOperation
(
value
=
"相位差下发"
,
notes
=
"相位差下发"
)
@ApiOperation
(
value
=
"相位差下发"
,
notes
=
"相位差下发"
)
@PostMapping
(
"/phaseDiffSend"
)
@PostMapping
(
"/phaseDiffSend"
)
public
<
T
>
Result
<
T
>
phaseDiffSend
()
{
public
JsonViewObject
phaseDiffSend
()
{
return
hkControlCommandService
.
phaseDiffSend
();
return
controlCommandStrategyService
.
phaseDiffSendStrategy
();
}
}
}
}
signal-utc-service/src/main/java/net/wanji/utc/service/control/ControlCommandService.java
View file @
69a0745d
package
net
.
wanji
.
utc
.
service
.
control
;
package
net
.
wanji
.
utc
.
service
.
control
;
import
net.wanji.utc.common.Result
;
import
net.wanji.utc.entity.JsonViewObject
;
import
net.wanji.utc.service.rpc.RpcService
;
import
net.wanji.utc.vo.*
;
import
net.wanji.utc.vo.*
;
/**
/**
...
@@ -9,37 +10,37 @@ import net.wanji.utc.vo.*;
...
@@ -9,37 +10,37 @@ import net.wanji.utc.vo.*;
* @author wuxiaokai
* @author wuxiaokai
* @date 2022/11/15 14:02:36
* @date 2022/11/15 14:02:36
*/
*/
public
interface
ControlCommandService
{
public
interface
ControlCommandService
extends
RpcService
{
/**
/**
* 方案下发
* 方案下发
*/
*/
<
T
>
Result
<
T
>
schemeSend
(
SchemeSendVO
schemeSendVO
)
throws
Exception
;
JsonViewObject
schemeSend
(
SchemeSendVO
schemeSendVO
)
throws
Exception
;
/**
/**
* 计划下发
* 计划下发
*
*
* @param planSendVO 计划下发VO
* @param planSendVO 计划下发VO
* @return
{@link Result}<{@link T}>
* @return
*/
*/
<
T
>
Result
<
T
>
planSend
(
PlanSendVO
planSendVO
)
throws
Exception
;
JsonViewObject
planSend
(
PlanSendVO
planSendVO
)
throws
Exception
;
/**
/**
* 时间表下发
* 时间表下发
*
*
* @param scheduleSendVO 时间表下发VO
* @param scheduleSendVO 时间表下发VO
* @return
{@link Result}<{@link T}>
* @return
*/
*/
<
T
>
Result
<
T
>
scheduleSend
(
ScheduleSendVO
scheduleSendVO
)
throws
Exception
;
JsonViewObject
scheduleSend
(
ScheduleSendVO
scheduleSendVO
)
throws
Exception
;
/**
/**
* 锁定控制
* 锁定控制
*
*
* @param commandVO 控制指令VO
* @param commandVO 控制指令VO
* @return
{@link Result}<{@link T}>
* @return
* @throws Exception 异常
* @throws Exception 异常
*/
*/
<
T
>
Result
<
T
>
lockControl
(
ControlCommandVO
commandVO
)
throws
Exception
;
JsonViewObject
lockControl
(
ControlCommandVO
commandVO
)
throws
Exception
;
/**
/**
* 步进控制
* 步进控制
...
@@ -47,10 +48,10 @@ public interface ControlCommandService {
...
@@ -47,10 +48,10 @@ public interface ControlCommandService {
* @param code 信号机编号
* @param code 信号机编号
* @param command 1 开始步进 0 取消步进
* @param command 1 开始步进 0 取消步进
* @param stepNum 0 顺序步进 n 跳过n个相位
* @param stepNum 0 顺序步进 n 跳过n个相位
* @return
{@link Result}<{@link T}>
* @return
* @throws Exception 异常
* @throws Exception 异常
*/
*/
<
T
>
Result
<
T
>
stepControl
(
String
code
,
Integer
command
,
Integer
stepNum
)
throws
Exception
;
JsonViewObject
stepControl
(
String
code
,
Integer
command
,
Integer
stepNum
)
throws
Exception
;
/**
/**
* 设置信号机控制模式
* 设置信号机控制模式
...
@@ -58,30 +59,30 @@ public interface ControlCommandService {
...
@@ -58,30 +59,30 @@ public interface ControlCommandService {
* @param code 信号机编号
* @param code 信号机编号
* @param command 指令 1 开 0 关
* @param command 指令 1 开 0 关
* @param commandType 命令类型
* @param commandType 命令类型
* @return
{@link Result}<{@link T}>
* @return
* @throws Exception 异常
* @throws Exception 异常
*/
*/
<
T
>
Result
<
T
>
setSignalControl
(
String
code
,
Integer
command
,
Integer
commandType
)
throws
Exception
;
JsonViewObject
setSignalControl
(
String
code
,
Integer
command
,
Integer
commandType
)
throws
Exception
;
/**
/**
* 恢复时间表
* 恢复时间表
*
*
* @param code 信号机编号
* @param code 信号机编号
* @return
{@link Result}<{@link T}>
* @return
*/
*/
<
T
>
Result
<
T
>
recoverSchedule
(
String
code
)
throws
Exception
;
JsonViewObject
recoverSchedule
(
String
code
)
throws
Exception
;
/**
/**
* 相位配时下发
* 相位配时下发
*
*
* @return
{@link Result}<{@link T}>
* @return
* @throws InterruptedException 中断异常
* @throws InterruptedException 中断异常
*/
*/
<
T
>
Result
<
T
>
phaseTimingSend
(
PhaseTimingSendVO
phaseTimingSendVO
)
throws
Exception
;
JsonViewObject
phaseTimingSend
(
PhaseTimingSendVO
phaseTimingSendVO
)
throws
Exception
;
/**
/**
* 相位差下发
* 相位差下发
*/
*/
<
T
>
Result
<
T
>
phaseDiffSend
();
JsonViewObject
phaseDiffSend
();
}
}
signal-utc-service/src/main/java/net/wanji/utc/service/control/ControlCommandStrategyService.java
0 → 100644
View file @
69a0745d
package
net
.
wanji
.
utc
.
service
.
control
;
import
net.wanji.utc.entity.JsonViewObject
;
import
net.wanji.utc.vo.*
;
/**
* @author duanruiming
* @date 2023/01/12 9:44
*/
public
interface
ControlCommandStrategyService
{
/**
* 方案下发
*/
JsonViewObject
schemeSendStrategy
(
SchemeSendVO
schemeSendVO
)
throws
Exception
;
/**
* 计划下发
*
* @param planSendVO 计划下发VO
* @return
*/
JsonViewObject
planSendStrategy
(
PlanSendVO
planSendVO
)
throws
Exception
;
/**
* 时间表下发
*
* @param scheduleSendVO 时间表下发VO
* @return
*/
JsonViewObject
scheduleSendStrategy
(
ScheduleSendVO
scheduleSendVO
)
throws
Exception
;
/**
* 锁定控制
*
* @param commandVO 控制指令VO
* @return
* @throws Exception 异常
*/
JsonViewObject
lockControlStrategy
(
ControlCommandVO
commandVO
)
throws
Exception
;
/**
* 步进控制
*
* @param code 信号机编号
* @param command 1 开始步进 0 取消步进
* @param stepNum 0 顺序步进 n 跳过n个相位
* @return
* @throws Exception 异常
*/
JsonViewObject
stepControlStrategy
(
String
code
,
Integer
command
,
Integer
stepNum
)
throws
Exception
;
/**
* 设置信号机控制模式
*
* @param code 信号机编号
* @param command 指令 1 开 0 关
* @param commandType 命令类型
* @return
* @throws Exception 异常
*/
JsonViewObject
setSignalControlStrategy
(
String
code
,
Integer
command
,
Integer
commandType
)
throws
Exception
;
/**
* 恢复时间表
*
* @param code 信号机编号
* @return
*/
JsonViewObject
recoverScheduleStrategy
(
String
code
)
throws
Exception
;
/**
* 相位配时下发
*
* @return
* @throws InterruptedException 中断异常
*/
JsonViewObject
phaseTimingSendStrategy
(
PhaseTimingSendVO
phaseTimingSendVO
)
throws
Exception
;
/**
* 相位差下发
*/
JsonViewObject
phaseDiffSendStrategy
();
}
signal-utc-service/src/main/java/net/wanji/utc/service/control/impl/ControlCommandStrategyServiceImpl.java
0 → 100644
View file @
69a0745d
package
net
.
wanji
.
utc
.
service
.
control
.
impl
;
import
lombok.RequiredArgsConstructor
;
import
net.wanji.utc.common.typeenum.BasicEnum
;
import
net.wanji.utc.common.typeenum.DateStyle
;
import
net.wanji.utc.entity.JsonViewObject
;
import
net.wanji.utc.mapper.*
;
import
net.wanji.utc.po.*
;
import
net.wanji.utc.service.control.ControlCommandStrategyService
;
import
net.wanji.utc.service.control.ControlCommandService
;
import
net.wanji.utc.util.StringUtils
;
import
net.wanji.utc.vo.*
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.annotation.Resource
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @author duanruiming
* @date 2023/01/12 9:53
*/
@Service
@RequiredArgsConstructor
public
class
ControlCommandStrategyServiceImpl
implements
ControlCommandStrategyService
{
@Resource
(
name
=
"hkControlCommandService"
)
ControlCommandService
hkControlCommandService
;
@Resource
(
name
=
"wanJiControlCommandService"
)
ControlCommandService
wanJiControlCommandService
;
private
final
CrossInfoMapper
crossInfoMapper
;
private
final
ManufacturerInfoMapper
manufacturerInfoMapper
;
private
final
CrossSchemeMapper
crossSchemeMapper
;
private
final
CrossPhaseMapper
crossPhaseMapper
;
private
final
CrossSectionMapper
crossSectionMapper
;
private
final
CrossPlanMapper
crossPlanMapper
;
private
final
CrossSchedulesMapper
crossSchedulesMapper
;
/**
* 通过路口编号获取厂商编码
*
* @param crossId
* @return
*/
public
String
getManufacturerCodeByCrossId
(
String
crossId
)
{
// 获取厂商ID和信号机ID
CrossInfoPO
crossInfoPO
=
crossInfoMapper
.
selectByPrimaryKey
(
crossId
);
String
signalId
=
crossInfoPO
.
getCode
();
Integer
manufacturerId
=
crossInfoPO
.
getManufacturerId
();
// 获取厂商代码
ManufacturerInfoPO
manufacturerInfoPO
=
manufacturerInfoMapper
.
selectById
(
manufacturerId
);
return
manufacturerInfoPO
.
getCode
();
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
JsonViewObject
schemeSendStrategy
(
SchemeSendVO
schemeSendVO
)
throws
Exception
{
JsonViewObject
jsonViewObject
;
String
manufacturerIdCode
=
getManufacturerCodeByCrossId
(
schemeSendVO
.
getCrossCode
());
if
(
StringUtils
.
equals
(
BasicEnum
.
ManufacturerEnum
.
HK
.
getCode
(),
manufacturerIdCode
))
{
jsonViewObject
=
hkControlCommandService
.
schemeSend
(
schemeSendVO
);
}
else
{
jsonViewObject
=
wanJiControlCommandService
.
schemeSend
(
schemeSendVO
);
}
schemeSendDataInsert
(
schemeSendVO
);
return
jsonViewObject
;
}
private
void
schemeSendDataInsert
(
SchemeSendVO
schemeSendVO
)
{
// 入库操作
List
<
CrossSchemePO
>
crossSchemePOList
=
new
ArrayList
<>();
schemeSendVO
.
getPatternList
().
forEach
(
pattern
->
{
CrossSchemePO
crossSchemePO
=
new
CrossSchemePO
();
crossSchemePO
.
setSchemeNo
(
pattern
.
getPatternNo
());
crossSchemePO
.
setName
(
pattern
.
getPatternName
());
crossSchemePO
.
setCrossId
(
schemeSendVO
.
getCrossCode
());
crossSchemePO
.
setCycle
(
Integer
.
parseInt
(
pattern
.
getCycle
()));
crossSchemePO
.
setCoordPhase
(
Integer
.
parseInt
(
pattern
.
getCoordPhase
()));
crossSchemePO
.
setOffset
(
Integer
.
parseInt
(
pattern
.
getOffset
()));
crossSchemePO
.
setSource
(
2
);
crossSchemePO
.
setIsDeleted
(
0
);
crossSchemePOList
.
add
(
crossSchemePO
);
pattern
.
getRings
().
forEach
(
ring
->
{
List
<
CrossPhasePO
>
crossPhasePOList
=
new
ArrayList
<>();
ring
.
getPhaseList
().
forEach
(
phase
->
{
CrossPhasePO
crossPhasePO
=
new
CrossPhasePO
();
crossPhasePO
.
setPhaseNo
(
phase
.
getPhaseNo
());
crossPhasePO
.
setName
(
phase
.
getPhaseName
());
crossPhasePO
.
setSort
(
Integer
.
parseInt
(
phase
.
getSort
()));
crossPhasePO
.
setCrossId
(
schemeSendVO
.
getCrossCode
());
crossPhasePO
.
setPlanId
(
Integer
.
parseInt
(
pattern
.
getPatternNo
()));
crossPhasePO
.
setRingNo
(
Integer
.
parseInt
(
ring
.
getRingNo
()));
crossPhasePO
.
setControlMode
(
Integer
.
parseInt
(
phase
.
getControlMode
()));
crossPhasePO
.
setPhaseTime
(
Integer
.
parseInt
(
phase
.
getPhaseTime
()));
crossPhasePO
.
setGreenTime
(
Integer
.
parseInt
(
phase
.
getGreenTime
()));
crossPhasePO
.
setGreenFlashTime
(
Integer
.
parseInt
(
phase
.
getGreenFlashTime
()));
crossPhasePO
.
setPedFlashTime
(
Integer
.
parseInt
(
phase
.
getPedFlashTime
()));
crossPhasePO
.
setYellowTime
(
Integer
.
parseInt
(
phase
.
getYellowTime
()));
crossPhasePO
.
setRedTime
(
Integer
.
parseInt
(
phase
.
getRedTime
()));
crossPhasePO
.
setMinGreenTime
(
Integer
.
parseInt
(
phase
.
getMinGreenTime
()));
crossPhasePO
.
setMaxGreenTime
(
Integer
.
parseInt
(
phase
.
getMaxGreenTime
()));
crossPhasePOList
.
add
(
crossPhasePO
);
});
// 入库路口相位表
crossPhaseMapper
.
insertBatch
(
crossPhasePOList
);
});
});
// 入库信号方案表
crossSchemeMapper
.
insertBatch
(
crossSchemePOList
);
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
JsonViewObject
planSendStrategy
(
PlanSendVO
planSendVO
)
throws
Exception
{
JsonViewObject
jsonViewObject
;
String
manufacturerIdCode
=
getManufacturerCodeByCrossId
(
planSendVO
.
getCrossCode
());
if
(
StringUtils
.
equals
(
BasicEnum
.
ManufacturerEnum
.
HK
.
getCode
(),
manufacturerIdCode
))
{
jsonViewObject
=
hkControlCommandService
.
planSend
(
planSendVO
);
}
else
{
jsonViewObject
=
wanJiControlCommandService
.
planSend
(
planSendVO
);
}
planSendDataInsert
(
planSendVO
);
return
jsonViewObject
;
}
private
void
planSendDataInsert
(
PlanSendVO
planSendVO
)
{
List
<
CrossPlanPO
>
crossPlanPOList
=
new
ArrayList
<>();
planSendVO
.
getPlanList
().
forEach
(
plan
->
{
CrossPlanPO
crossPlanPO
=
new
CrossPlanPO
();
crossPlanPO
.
setPlanNo
(
plan
.
getPlanNo
());
crossPlanPO
.
setName
(
plan
.
getPlanDescribe
());
crossPlanPO
.
setCrossId
(
planSendVO
.
getCrossCode
());
crossPlanPOList
.
add
(
crossPlanPO
);
List
<
CrossSectionPO
>
crossSectionPOList
=
new
ArrayList
<>();
plan
.
getSectionList
().
forEach
(
section
->
{
CrossSectionPO
crossSectionPO
=
new
CrossSectionPO
();
crossSectionPO
.
setSectionNo
(
section
.
getSectionNo
());
crossSectionPO
.
setStartTime
(
section
.
getBeginTime
());
crossSectionPO
.
setEndTime
(
section
.
getEndTime
());
crossSectionPO
.
setCrossId
(
planSendVO
.
getCrossCode
());
crossSectionPO
.
setPlanId
(
Integer
.
parseInt
(
plan
.
getPlanNo
()));
crossSectionPO
.
setControlMode
(
Integer
.
parseInt
(
section
.
getControlMode
()));
crossSectionPO
.
setScemeId
(
Integer
.
parseInt
(
section
.
getPatternNo
()));
crossSectionPOList
.
add
(
crossSectionPO
);
});
// 入库路口时段表
crossSectionMapper
.
insertBatch
(
crossSectionPOList
);
});
// 入库路口计划表
crossPlanMapper
.
insertBatch
(
crossPlanPOList
);
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
JsonViewObject
scheduleSendStrategy
(
ScheduleSendVO
scheduleSendVO
)
throws
Exception
{
JsonViewObject
jsonViewObject
;
String
manufacturerIdCode
=
getManufacturerCodeByCrossId
(
scheduleSendVO
.
getCrossCode
());
if
(
StringUtils
.
equals
(
BasicEnum
.
ManufacturerEnum
.
HK
.
getCode
(),
manufacturerIdCode
))
{
jsonViewObject
=
hkControlCommandService
.
scheduleSend
(
scheduleSendVO
);
}
else
{
jsonViewObject
=
wanJiControlCommandService
.
scheduleSend
(
scheduleSendVO
);
}
scheduleSendDataInsert
(
scheduleSendVO
);
return
jsonViewObject
;
}
private
void
scheduleSendDataInsert
(
ScheduleSendVO
scheduleSendVO
)
{
// 1、入库操作
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
DateStyle
.
YYYY_MM_DD
.
getValue
());
ArrayList
<
CrossSchedulesPO
>
crossSchedulesPOS
=
new
ArrayList
<>();
scheduleSendVO
.
getSchedules
().
forEach
(
schedule
->
{
schedule
.
getWeeks
().
forEach
(
week
->
{
CrossSchedulesPO
schedulesPO
=
new
CrossSchedulesPO
();
if
(
week
.
getWeekNum
()
>=
6
)
{
schedulesPO
.
setName
(
"周末"
);
}
else
{
schedulesPO
.
setName
(
"工作日"
);
}
schedulesPO
.
setCrossId
(
scheduleSendVO
.
getCrossCode
());
schedulesPO
.
setPlanId
(
week
.
getPlanNo
());
schedulesPO
.
setWeek
(
week
.
getWeekNum
());
schedulesPO
.
setSpecialDate
(
null
);
crossSchedulesPOS
.
add
(
schedulesPO
);
});
schedule
.
getSpecialDays
().
forEach
(
specialDay
->
{
CrossSchedulesPO
schedulesPO
=
new
CrossSchedulesPO
();
schedulesPO
.
setName
(
"特殊日期"
);
schedulesPO
.
setCrossId
(
scheduleSendVO
.
getCrossCode
());
schedulesPO
.
setPlanId
(
specialDay
.
getPlanNo
());
schedulesPO
.
setWeek
(
null
);
try
{
schedulesPO
.
setSpecialDate
(
sdf
.
parse
(
specialDay
.
getDateStr
()));
}
catch
(
ParseException
e
)
{
schedulesPO
.
setSpecialDate
(
null
);
}
crossSchedulesPOS
.
add
(
schedulesPO
);
});
});
// 入库时间表
crossSchedulesMapper
.
insertBatch
(
crossSchedulesPOS
);
}
@Override
public
JsonViewObject
lockControlStrategy
(
ControlCommandVO
commandVO
)
throws
Exception
{
JsonViewObject
jsonViewObject
;
String
manufacturerIdCode
=
getManufacturerCodeByCrossId
(
commandVO
.
getCrossCode
());
if
(
StringUtils
.
equals
(
BasicEnum
.
ManufacturerEnum
.
HK
.
getCode
(),
manufacturerIdCode
))
{
jsonViewObject
=
hkControlCommandService
.
lockControl
(
commandVO
);
}
else
{
jsonViewObject
=
wanJiControlCommandService
.
lockControl
(
commandVO
);
}
return
jsonViewObject
;
}
@Override
public
JsonViewObject
stepControlStrategy
(
String
crossId
,
Integer
command
,
Integer
stepNum
)
throws
Exception
{
JsonViewObject
jsonViewObject
;
String
manufacturerIdCode
=
getManufacturerCodeByCrossId
(
crossId
);
if
(
StringUtils
.
equals
(
BasicEnum
.
ManufacturerEnum
.
HK
.
getCode
(),
manufacturerIdCode
))
{
jsonViewObject
=
hkControlCommandService
.
stepControl
(
crossId
,
command
,
stepNum
);
}
else
{
jsonViewObject
=
wanJiControlCommandService
.
stepControl
(
crossId
,
command
,
stepNum
);
}
return
jsonViewObject
;
}
@Override
public
JsonViewObject
setSignalControlStrategy
(
String
crossId
,
Integer
command
,
Integer
commandType
)
throws
Exception
{
JsonViewObject
jsonViewObject
;
String
manufacturerIdCode
=
getManufacturerCodeByCrossId
(
crossId
);
if
(
StringUtils
.
equals
(
BasicEnum
.
ManufacturerEnum
.
HK
.
getCode
(),
manufacturerIdCode
))
{
jsonViewObject
=
hkControlCommandService
.
setSignalControl
(
crossId
,
command
,
commandType
);
}
else
{
jsonViewObject
=
wanJiControlCommandService
.
setSignalControl
(
crossId
,
command
,
commandType
);
}
return
jsonViewObject
;
}
@Override
public
JsonViewObject
recoverScheduleStrategy
(
String
crossId
)
throws
Exception
{
JsonViewObject
jsonViewObject
;
String
manufacturerIdCode
=
getManufacturerCodeByCrossId
(
crossId
);
if
(
StringUtils
.
equals
(
BasicEnum
.
ManufacturerEnum
.
HK
.
getCode
(),
manufacturerIdCode
))
{
jsonViewObject
=
hkControlCommandService
.
recoverSchedule
(
crossId
);
}
else
{
jsonViewObject
=
wanJiControlCommandService
.
recoverSchedule
(
crossId
);
}
return
jsonViewObject
;
}
@Override
public
JsonViewObject
phaseTimingSendStrategy
(
PhaseTimingSendVO
phaseTimingSendVO
)
throws
Exception
{
JsonViewObject
jsonViewObject
;
String
manufacturerIdCode
=
getManufacturerCodeByCrossId
(
phaseTimingSendVO
.
getCrossCode
());
if
(
StringUtils
.
equals
(
BasicEnum
.
ManufacturerEnum
.
HK
.
getCode
(),
manufacturerIdCode
))
{
jsonViewObject
=
hkControlCommandService
.
phaseTimingSend
(
phaseTimingSendVO
);
}
else
{
jsonViewObject
=
wanJiControlCommandService
.
phaseTimingSend
(
phaseTimingSendVO
);
}
return
jsonViewObject
;
}
@Override
public
JsonViewObject
phaseDiffSendStrategy
()
{
return
null
;
}
}
signal-utc-service/src/main/java/net/wanji/utc/service/control/impl/HKControlCommandServiceImpl.java
View file @
69a0745d
...
@@ -7,16 +7,17 @@ import com.google.common.collect.Lists;
...
@@ -7,16 +7,17 @@ import com.google.common.collect.Lists;
import
com.hikvision.artemis.sdk.ArtemisHttpUtil
;
import
com.hikvision.artemis.sdk.ArtemisHttpUtil
;
import
com.hikvision.artemis.sdk.config.ArtemisConfig
;
import
com.hikvision.artemis.sdk.config.ArtemisConfig
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.utc.common.Result
;
import
net.wanji.utc.common.baseentity.BaseCrossInfo
;
import
net.wanji.utc.common.baseentity.BaseCrossInfo
;
import
net.wanji.utc.common.exception.ControlException
;
import
net.wanji.utc.common.exception.ControlException
;
import
net.wanji.utc.common.typeenum.BasicEnum
;
import
net.wanji.utc.common.typeenum.BasicEnum
;
import
net.wanji.utc.common.typeenum.DateStyle
;
import
net.wanji.utc.dto.hk.DownloadPlanSpandsDTO
;
import
net.wanji.utc.dto.hk.DownloadPlanSpandsDTO
;
import
net.wanji.utc.dto.hk.DownloadScheduleDTO
;
import
net.wanji.utc.dto.hk.DownloadScheduleDTO
;
import
net.wanji.utc.dto.hk.DownloadTimeSpandsDTO
;
import
net.wanji.utc.dto.hk.DownloadTimeSpandsDTO
;
import
net.wanji.utc.entity.JsonViewObject
;
import
net.wanji.utc.mapper.*
;
import
net.wanji.utc.mapper.*
;
import
net.wanji.utc.po.*
;
import
net.wanji.utc.po.CrossInfoPO
;
import
net.wanji.utc.po.CrossPhasePO
;
import
net.wanji.utc.po.ManufacturerInfoPO
;
import
net.wanji.utc.service.control.ControlCommandService
;
import
net.wanji.utc.service.control.ControlCommandService
;
import
net.wanji.utc.service.runninginfo.HkLightsStatusService
;
import
net.wanji.utc.service.runninginfo.HkLightsStatusService
;
import
net.wanji.utc.util.FieldUtil
;
import
net.wanji.utc.util.FieldUtil
;
...
@@ -25,8 +26,6 @@ import net.wanji.utc.vo.*;
...
@@ -25,8 +26,6 @@ import net.wanji.utc.vo.*;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -69,11 +68,10 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
...
@@ -69,11 +68,10 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
private
ManufacturerInfoMapper
manufacturerInfoMapper
;
private
ManufacturerInfoMapper
manufacturerInfoMapper
;
@Override
@Override
public
<
T
>
Result
<
T
>
schemeSend
(
SchemeSendVO
schemeSendVO
)
throws
Exception
{
public
JsonViewObject
schemeSend
(
SchemeSendVO
schemeSendVO
)
throws
Exception
{
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
// 厂商 HK
// 厂商 HK
ManufacturerInfoPO
manufacturerInfoPO
=
checkCrossCode
(
schemeSendVO
.
getCrossCode
());
ManufacturerInfoPO
manufacturerInfoPO
=
checkCrossCode
(
schemeSendVO
.
getCrossCode
());
if
(
manufacturerInfoPO
.
getCode
().
equals
(
BasicEnum
.
ManufacturerEnum
.
HK
.
getCode
()))
{
// 1、组装参数, 下发海康信号机
// 1、组装参数, 下发海康信号机
DownloadPlanSpandsDTO
dto
=
new
DownloadPlanSpandsDTO
();
DownloadPlanSpandsDTO
dto
=
new
DownloadPlanSpandsDTO
();
// 将路口code转换为信号机code
// 将路口code转换为信号机code
...
@@ -117,63 +115,16 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
...
@@ -117,63 +115,16 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
JSONObject
obj
=
JSON
.
parseObject
(
strResult
);
JSONObject
obj
=
JSON
.
parseObject
(
strResult
);
if
(
obj
.
get
(
HK_CODE_KEY
).
equals
(
HK_SUCCESS_STRING_CODE
))
{
if
(
obj
.
get
(
HK_CODE_KEY
).
equals
(
HK_SUCCESS_STRING_CODE
))
{
// 入库操作
return
jsonViewObject
.
success
(
"海康下发信号机方案成功"
);
List
<
CrossSchemePO
>
crossSchemePOList
=
new
ArrayList
<>();
schemeSendVO
.
getPatternList
().
forEach
(
pattern
->
{
CrossSchemePO
crossSchemePO
=
new
CrossSchemePO
();
crossSchemePO
.
setSchemeNo
(
pattern
.
getPatternNo
());
crossSchemePO
.
setName
(
pattern
.
getPatternName
());
crossSchemePO
.
setCrossId
(
schemeSendVO
.
getCrossCode
());
crossSchemePO
.
setCycle
(
Integer
.
parseInt
(
pattern
.
getCycle
()));
crossSchemePO
.
setCoordPhase
(
Integer
.
parseInt
(
pattern
.
getCoordPhase
()));
crossSchemePO
.
setOffset
(
Integer
.
parseInt
(
pattern
.
getOffset
()));
crossSchemePO
.
setSource
(
2
);
crossSchemePO
.
setIsDeleted
(
0
);
crossSchemePOList
.
add
(
crossSchemePO
);
pattern
.
getRings
().
forEach
(
ring
->
{
List
<
CrossPhasePO
>
crossPhasePOList
=
new
ArrayList
<>();
ring
.
getPhaseList
().
forEach
(
phase
->
{
CrossPhasePO
crossPhasePO
=
new
CrossPhasePO
();
crossPhasePO
.
setPhaseNo
(
phase
.
getPhaseNo
());
crossPhasePO
.
setName
(
phase
.
getPhaseName
());
crossPhasePO
.
setSort
(
Integer
.
parseInt
(
phase
.
getSort
()));
crossPhasePO
.
setCrossId
(
schemeSendVO
.
getCrossCode
());
crossPhasePO
.
setPlanId
(
Integer
.
parseInt
(
pattern
.
getPatternNo
()));
crossPhasePO
.
setRingNo
(
Integer
.
parseInt
(
ring
.
getRingNo
()));
crossPhasePO
.
setControlMode
(
Integer
.
parseInt
(
phase
.
getControlMode
()));
crossPhasePO
.
setPhaseTime
(
Integer
.
parseInt
(
phase
.
getPhaseTime
()));
crossPhasePO
.
setGreenTime
(
Integer
.
parseInt
(
phase
.
getGreenTime
()));
crossPhasePO
.
setGreenFlashTime
(
Integer
.
parseInt
(
phase
.
getGreenFlashTime
()));
crossPhasePO
.
setPedFlashTime
(
Integer
.
parseInt
(
phase
.
getPedFlashTime
()));
crossPhasePO
.
setYellowTime
(
Integer
.
parseInt
(
phase
.
getYellowTime
()));
crossPhasePO
.
setRedTime
(
Integer
.
parseInt
(
phase
.
getRedTime
()));
crossPhasePO
.
setMinGreenTime
(
Integer
.
parseInt
(
phase
.
getMinGreenTime
()));
crossPhasePO
.
setMaxGreenTime
(
Integer
.
parseInt
(
phase
.
getMaxGreenTime
()));
crossPhasePOList
.
add
(
crossPhasePO
);
});
// 入库路口相位表
crossPhaseMapper
.
insertBatch
(
crossPhasePOList
);
});
});
// 入库信号方案表
crossSchemeMapper
.
insertBatch
(
crossSchemePOList
);
return
Result
.
success
(
"下发信号机方案成功"
);
}
return
Result
.
error
(
obj
.
getString
(
"msg"
));
}
else
{
return
null
;
}
}
return
jsonViewObject
.
fail
(
obj
.
getString
(
"msg"
));
}
}
@Override
@Override
public
<
T
>
Result
<
T
>
planSend
(
PlanSendVO
planSendVO
)
throws
Exception
{
public
JsonViewObject
planSend
(
PlanSendVO
planSendVO
)
throws
Exception
{
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
// 厂商 HK
// 厂商 HK
ManufacturerInfoPO
manufacturerInfoPO
=
checkCrossCode
(
planSendVO
.
getCrossCode
());
ManufacturerInfoPO
manufacturerInfoPO
=
checkCrossCode
(
planSendVO
.
getCrossCode
());
if
(
manufacturerInfoPO
.
getCode
().
equals
(
BasicEnum
.
ManufacturerEnum
.
HK
.
getCode
()))
{
// 1、下发信号机计划拼接参数
// 1、下发信号机计划拼接参数
DownloadTimeSpandsDTO
downloadTimeSpandsDTO
=
new
DownloadTimeSpandsDTO
();
DownloadTimeSpandsDTO
downloadTimeSpandsDTO
=
new
DownloadTimeSpandsDTO
();
List
<
DownloadTimeSpandsDTO
.
Data
>
dataList
=
new
ArrayList
<>();
List
<
DownloadTimeSpandsDTO
.
Data
>
dataList
=
new
ArrayList
<>();
...
@@ -208,46 +159,16 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
...
@@ -208,46 +159,16 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
JSON
.
toJSONString
(
fieldMap
),
null
,
null
,
"application/json"
,
null
);
JSON
.
toJSONString
(
fieldMap
),
null
,
null
,
"application/json"
,
null
);
JSONObject
obj
=
JSON
.
parseObject
(
strResult
);
JSONObject
obj
=
JSON
.
parseObject
(
strResult
);
if
(
obj
.
get
(
HK_CODE_KEY
).
equals
(
HK_SUCCESS_STRING_CODE
))
{
if
(
obj
.
get
(
HK_CODE_KEY
).
equals
(
HK_SUCCESS_STRING_CODE
))
{
// 2、入库操作
return
jsonViewObject
.
success
(
"下发信号机计划成功"
);
List
<
CrossPlanPO
>
crossPlanPOList
=
new
ArrayList
<>();
planSendVO
.
getPlanList
().
forEach
(
plan
->
{
CrossPlanPO
crossPlanPO
=
new
CrossPlanPO
();
crossPlanPO
.
setPlanNo
(
plan
.
getPlanNo
());
crossPlanPO
.
setName
(
plan
.
getPlanDescribe
());
crossPlanPO
.
setCrossId
(
planSendVO
.
getCrossCode
());
crossPlanPOList
.
add
(
crossPlanPO
);
List
<
CrossSectionPO
>
crossSectionPOList
=
new
ArrayList
<>();
plan
.
getSectionList
().
forEach
(
section
->
{
CrossSectionPO
crossSectionPO
=
new
CrossSectionPO
();
crossSectionPO
.
setSectionNo
(
section
.
getSectionNo
());
crossSectionPO
.
setStartTime
(
section
.
getBeginTime
());
crossSectionPO
.
setEndTime
(
section
.
getEndTime
());
crossSectionPO
.
setCrossId
(
planSendVO
.
getCrossCode
());
crossSectionPO
.
setPlanId
(
Integer
.
parseInt
(
plan
.
getPlanNo
()));
crossSectionPO
.
setControlMode
(
Integer
.
parseInt
(
section
.
getControlMode
()));
crossSectionPO
.
setScemeId
(
Integer
.
parseInt
(
section
.
getPatternNo
()));
crossSectionPOList
.
add
(
crossSectionPO
);
});
// 入库路口时段表
crossSectionMapper
.
insertBatch
(
crossSectionPOList
);
});
// 入库路口计划表
crossPlanMapper
.
insertBatch
(
crossPlanPOList
);
return
Result
.
success
(
"下发信号机计划成功"
);
}
return
Result
.
error
(
obj
.
getString
(
"msg"
));
}
else
{
// todo else
return
null
;
}
}
return
jsonViewObject
.
fail
(
obj
.
getString
(
"msg"
));
}
}
@Override
@Override
public
<
T
>
Result
<
T
>
scheduleSend
(
ScheduleSendVO
param
)
throws
Exception
{
public
JsonViewObject
scheduleSend
(
ScheduleSendVO
param
)
throws
Exception
{
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
// 厂商 HK
// 厂商 HK
ManufacturerInfoPO
manufacturerInfoPO
=
checkCrossCode
(
param
.
getCrossCode
());
ManufacturerInfoPO
manufacturerInfoPO
=
checkCrossCode
(
param
.
getCrossCode
());
if
(
manufacturerInfoPO
.
getCode
().
equals
(
BasicEnum
.
ManufacturerEnum
.
HK
.
getCode
()))
{
// 1、通过获取当前运行的日期数据,获取最新的日期方案id
// 1、通过获取当前运行的日期数据,获取最新的日期方案id
JSONArray
body
=
new
JSONArray
();
JSONArray
body
=
new
JSONArray
();
//body.add(param.getCrossCode());
//body.add(param.getCrossCode());
...
@@ -331,54 +252,15 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
...
@@ -331,54 +252,15 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
JSON
.
toJSONString
(
fieldMap
),
null
,
null
,
"application/json"
,
null
);
JSON
.
toJSONString
(
fieldMap
),
null
,
null
,
"application/json"
,
null
);
JSONObject
obj
=
JSON
.
parseObject
(
updateResult
);
JSONObject
obj
=
JSON
.
parseObject
(
updateResult
);
if
(
obj
.
get
(
HK_CODE_KEY
).
equals
(
HK_SUCCESS_STRING_CODE
))
{
if
(
obj
.
get
(
HK_CODE_KEY
).
equals
(
HK_SUCCESS_STRING_CODE
))
{
return
jsonViewObject
.
success
(
"时间表下发成功"
);
// 1、入库操作
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
DateStyle
.
YYYY_MM_DD
.
getValue
());
ArrayList
<
CrossSchedulesPO
>
crossSchedulesPOS
=
new
ArrayList
<>();
param
.
getSchedules
().
forEach
(
schedule
->
{
schedule
.
getWeeks
().
forEach
(
week
->
{
CrossSchedulesPO
schedulesPO
=
new
CrossSchedulesPO
();
if
(
week
.
getWeekNum
()
>=
6
)
{
schedulesPO
.
setName
(
"周末"
);
}
else
{
schedulesPO
.
setName
(
"工作日"
);
}
schedulesPO
.
setCrossId
(
param
.
getCrossCode
());
schedulesPO
.
setPlanId
(
week
.
getPlanNo
());
schedulesPO
.
setWeek
(
week
.
getWeekNum
());
schedulesPO
.
setSpecialDate
(
null
);
crossSchedulesPOS
.
add
(
schedulesPO
);
});
schedule
.
getSpecialDays
().
forEach
(
specialDay
->
{
CrossSchedulesPO
schedulesPO
=
new
CrossSchedulesPO
();
schedulesPO
.
setName
(
"特殊日期"
);
schedulesPO
.
setCrossId
(
param
.
getCrossCode
());
schedulesPO
.
setPlanId
(
specialDay
.
getPlanNo
());
schedulesPO
.
setWeek
(
null
);
try
{
schedulesPO
.
setSpecialDate
(
sdf
.
parse
(
specialDay
.
getDateStr
()));
}
catch
(
ParseException
e
)
{
schedulesPO
.
setSpecialDate
(
null
);
}
crossSchedulesPOS
.
add
(
schedulesPO
);
});
});
// 入库时间表
crossSchedulesMapper
.
insertBatch
(
crossSchedulesPOS
);
return
Result
.
success
(
"时间表下发成功"
);
}
return
Result
.
error
(
obj
.
getString
(
"msg"
));
}
else
{
// todo else
return
null
;
}
}
return
jsonViewObject
.
fail
(
obj
.
getString
(
"msg"
));
}
}
@Override
@Override
public
<
T
>
Result
<
T
>
lockControl
(
ControlCommandVO
commandVO
)
throws
Exception
{
public
JsonViewObject
lockControl
(
ControlCommandVO
commandVO
)
throws
Exception
{
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
ManufacturerInfoPO
manufacturerInfoPO
=
checkCrossCode
(
commandVO
.
getCrossCode
());
ManufacturerInfoPO
manufacturerInfoPO
=
checkCrossCode
(
commandVO
.
getCrossCode
());
if
(
manufacturerInfoPO
.
getCode
().
equals
(
BasicEnum
.
ManufacturerEnum
.
HK
.
getCode
()))
{
if
(
commandVO
.
getCommand
().
equals
(
TRUE
))
{
if
(
commandVO
.
getCommand
().
equals
(
TRUE
))
{
Map
<
String
,
Object
>
param
=
new
HashMap
<
String
,
Object
>()
{
Map
<
String
,
Object
>
param
=
new
HashMap
<
String
,
Object
>()
{
{
{
...
@@ -415,17 +297,14 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
...
@@ -415,17 +297,14 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
JSON
.
toJSONString
(
param
),
null
,
null
,
"application/json"
,
null
);
JSON
.
toJSONString
(
param
),
null
,
null
,
"application/json"
,
null
);
JSONObject
obj
=
JSON
.
parseObject
(
strResult
);
JSONObject
obj
=
JSON
.
parseObject
(
strResult
);
if
(
HK_SUCCESS_STRING_CODE
.
equals
(
obj
.
get
(
HK_CODE_KEY
)))
{
if
(
HK_SUCCESS_STRING_CODE
.
equals
(
obj
.
get
(
HK_CODE_KEY
)))
{
return
Resul
t
.
success
(
"相位锁定成功"
);
return
jsonViewObjec
t
.
success
(
"相位锁定成功"
);
}
}
return
Result
.
error
(
obj
.
getString
(
"msg"
));
return
jsonViewObject
.
fail
(
obj
.
getString
(
"msg"
));
}
else
{
}
else
{
//return controlSignal(commandVO.getCrossCode(), UNLOCK_RUNNING_CONTROL);
//return controlSignal(commandVO.getCrossCode(), UNLOCK_RUNNING_CONTROL);
return
controlSignal
(
manufacturerInfoPO
.
getName
(),
UNLOCK_RUNNING_CONTROL
);
return
controlSignal
(
manufacturerInfoPO
.
getName
(),
UNLOCK_RUNNING_CONTROL
);
}
}
}
else
{
// todo else
return
null
;
}
}
}
/**
/**
...
@@ -460,9 +339,9 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
...
@@ -460,9 +339,9 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
}
}
@Override
@Override
public
<
T
>
Result
<
T
>
stepControl
(
String
code
,
Integer
command
,
Integer
stepNum
)
throws
Exception
{
public
JsonViewObject
stepControl
(
String
code
,
Integer
command
,
Integer
stepNum
)
throws
Exception
{
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
ManufacturerInfoPO
manufacturerInfoPO
=
checkCrossCode
(
code
);
ManufacturerInfoPO
manufacturerInfoPO
=
checkCrossCode
(
code
);
if
(
manufacturerInfoPO
.
getCode
().
equals
(
BasicEnum
.
ManufacturerEnum
.
HK
.
getCode
()))
{
if
(
command
.
equals
(
TRUE
))
{
if
(
command
.
equals
(
TRUE
))
{
Map
<
String
,
Object
>
param
=
new
HashMap
<
String
,
Object
>()
{
Map
<
String
,
Object
>
param
=
new
HashMap
<
String
,
Object
>()
{
...
@@ -504,48 +383,35 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
...
@@ -504,48 +383,35 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
JSON
.
toJSONString
(
param
),
null
,
null
,
"application/json"
,
null
);
JSON
.
toJSONString
(
param
),
null
,
null
,
"application/json"
,
null
);
JSONObject
obj
=
JSON
.
parseObject
(
strResult
);
JSONObject
obj
=
JSON
.
parseObject
(
strResult
);
if
(
HK_SUCCESS_STRING_CODE
.
equals
(
obj
.
get
(
HK_CODE_KEY
)))
{
if
(
HK_SUCCESS_STRING_CODE
.
equals
(
obj
.
get
(
HK_CODE_KEY
)))
{
return
Resul
t
.
success
();
return
jsonViewObjec
t
.
success
();
}
}
return
Result
.
error
(
obj
.
getString
(
"msg"
));
return
jsonViewObject
.
fail
(
obj
.
getString
(
"msg"
));
}
else
{
}
else
{
//return controlSignal(code, CANCEL_STEP_CONTROL);
//return controlSignal(code, CANCEL_STEP_CONTROL);
return
controlSignal
(
manufacturerInfoPO
.
getName
(),
CANCEL_STEP_CONTROL
);
return
controlSignal
(
manufacturerInfoPO
.
getName
(),
CANCEL_STEP_CONTROL
);
}
}
}
else
{
// todo else
return
null
;
}
}
}
@Override
@Override
public
<
T
>
Result
<
T
>
setSignalControl
(
String
code
,
Integer
command
,
Integer
commandType
)
throws
Exception
{
public
JsonViewObject
setSignalControl
(
String
code
,
Integer
command
,
Integer
commandType
)
throws
Exception
{
ManufacturerInfoPO
manufacturerInfoPO
=
checkCrossCode
(
code
);
ManufacturerInfoPO
manufacturerInfoPO
=
checkCrossCode
(
code
);
if
(
manufacturerInfoPO
.
getCode
().
equals
(
BasicEnum
.
ManufacturerEnum
.
HK
.
getCode
()))
{
Integer
runningMode
=
command
.
equals
(
TRUE
)
?
commandType
:
NORMAL_RUNNING_CONTROL
;
Integer
runningMode
=
command
.
equals
(
TRUE
)
?
commandType
:
NORMAL_RUNNING_CONTROL
;
//return controlSignal(code, runningMode);
//return controlSignal(code, runningMode);
return
controlSignal
(
manufacturerInfoPO
.
getName
(),
runningMode
);
return
controlSignal
(
manufacturerInfoPO
.
getName
(),
runningMode
);
}
else
{
// todo else
return
null
;
}
}
}
@Override
@Override
public
<
T
>
Result
<
T
>
recoverSchedule
(
String
code
)
throws
Exception
{
public
JsonViewObject
recoverSchedule
(
String
code
)
throws
Exception
{
ManufacturerInfoPO
manufacturerInfoPO
=
checkCrossCode
(
code
);
ManufacturerInfoPO
manufacturerInfoPO
=
checkCrossCode
(
code
);
if
(
manufacturerInfoPO
.
getCode
().
equals
(
BasicEnum
.
ManufacturerEnum
.
HK
.
getCode
()))
{
//return controlSignal(code, NORMAL_RUNNING_CONTROL);
//return controlSignal(code, NORMAL_RUNNING_CONTROL);
return
controlSignal
(
manufacturerInfoPO
.
getName
(),
NORMAL_RUNNING_CONTROL
);
return
controlSignal
(
manufacturerInfoPO
.
getName
(),
NORMAL_RUNNING_CONTROL
);
}
else
{
// todo else
return
null
;
}
}
}
@Override
@Override
public
<
T
>
Result
<
T
>
phaseTimingSend
(
PhaseTimingSendVO
phaseTimingSendVO
)
throws
Exception
{
public
JsonViewObject
phaseTimingSend
(
PhaseTimingSendVO
phaseTimingSendVO
)
throws
Exception
{
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
ManufacturerInfoPO
manufacturerInfoPO
=
checkCrossCode
(
phaseTimingSendVO
.
getCrossCode
());
ManufacturerInfoPO
manufacturerInfoPO
=
checkCrossCode
(
phaseTimingSendVO
.
getCrossCode
());
if
(
manufacturerInfoPO
.
getCode
().
equals
(
BasicEnum
.
ManufacturerEnum
.
HK
.
getCode
()))
{
// 将路口code转换为信号机code
// 将路口code转换为信号机code
phaseTimingSendVO
.
setCrossCode
(
manufacturerInfoPO
.
getName
());
phaseTimingSendVO
.
setCrossCode
(
manufacturerInfoPO
.
getName
());
Map
<
String
,
Object
>
param
=
FieldUtil
.
fieldMethod
(
phaseTimingSendVO
);
Map
<
String
,
Object
>
param
=
FieldUtil
.
fieldMethod
(
phaseTimingSendVO
);
...
@@ -555,17 +421,13 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
...
@@ -555,17 +421,13 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
JSON
.
toJSONString
(
param
),
null
,
null
,
"application/json"
,
null
);
JSON
.
toJSONString
(
param
),
null
,
null
,
"application/json"
,
null
);
JSONObject
obj
=
JSON
.
parseObject
(
strResult
);
JSONObject
obj
=
JSON
.
parseObject
(
strResult
);
if
(
HK_SUCCESS_STRING_CODE
.
equals
(
obj
.
get
(
HK_CODE_KEY
)))
{
if
(
HK_SUCCESS_STRING_CODE
.
equals
(
obj
.
get
(
HK_CODE_KEY
)))
{
return
Result
.
success
();
return
jsonViewObject
.
success
();
}
return
Result
.
error
(
obj
.
getString
(
"msg"
));
}
else
{
// todo else
return
null
;
}
}
return
jsonViewObject
.
fail
(
obj
.
getString
(
"msg"
));
}
}
@Override
@Override
public
<
T
>
Result
<
T
>
phaseDiffSend
()
{
public
JsonViewObject
phaseDiffSend
()
{
return
null
;
return
null
;
}
}
...
@@ -573,7 +435,8 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
...
@@ -573,7 +435,8 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
* @param code 信号机编号
* @param code 信号机编号
* @param runningMode 0-多时段控制模式 1-关灯、2-黄闪、3-全红、11-取消步进控制、12-灯态锁定、13-灯态解锁
* @param runningMode 0-多时段控制模式 1-关灯、2-黄闪、3-全红、11-取消步进控制、12-灯态锁定、13-灯态解锁
*/
*/
private
<
T
>
Result
<
T
>
controlSignal
(
String
code
,
Integer
runningMode
)
throws
Exception
{
private
JsonViewObject
controlSignal
(
String
code
,
Integer
runningMode
)
throws
Exception
{
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
//执行恢复时间表方案命令
//执行恢复时间表方案命令
if
(
NORMAL_RUNNING_CONTROL
.
equals
(
runningMode
)
||
CANCEL_STEP_CONTROL
.
equals
(
runningMode
))
{
if
(
NORMAL_RUNNING_CONTROL
.
equals
(
runningMode
)
||
CANCEL_STEP_CONTROL
.
equals
(
runningMode
))
{
//根据实时灯态获取当前运行模式
//根据实时灯态获取当前运行模式
...
@@ -602,9 +465,9 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
...
@@ -602,9 +465,9 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
JSON
.
toJSONString
(
param
),
null
,
null
,
"application/json"
,
null
);
JSON
.
toJSONString
(
param
),
null
,
null
,
"application/json"
,
null
);
JSONObject
obj
=
JSON
.
parseObject
(
strResult
);
JSONObject
obj
=
JSON
.
parseObject
(
strResult
);
if
(
HK_SUCCESS_STRING_CODE
.
equals
(
obj
.
get
(
HK_CODE_KEY
)))
{
if
(
HK_SUCCESS_STRING_CODE
.
equals
(
obj
.
get
(
HK_CODE_KEY
)))
{
return
Resul
t
.
success
();
return
jsonViewObjec
t
.
success
();
}
}
return
Result
.
error
(
obj
.
getString
(
"msg"
));
return
jsonViewObject
.
fail
(
obj
.
getString
(
"msg"
));
}
}
/**
/**
...
...
signal-utc-service/src/main/java/net/wanji/utc/service/control/impl/WanJiControlCommandServiceImpl.java
0 → 100644
View file @
69a0745d
package
net
.
wanji
.
utc
.
service
.
control
.
impl
;
import
com.alibaba.fastjson.JSONObject
;
import
lombok.RequiredArgsConstructor
;
import
net.wanji.utc.entity.JsonViewObject
;
import
net.wanji.utc.service.control.ControlCommandService
;
import
net.wanji.utc.util.HttpRestUtil
;
import
net.wanji.utc.util.StringUtils
;
import
net.wanji.utc.vo.*
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
java.util.HashMap
;
/**
* @author duanruiming
* @date 2023/01/12 13:18
*/
@Service
(
"wanJiControlCommandService"
)
@RequiredArgsConstructor
public
class
WanJiControlCommandServiceImpl
implements
ControlCommandService
{
private
final
HttpRestUtil
httpRestUtil
;
@Value
(
"url"
)
private
String
rpcUri
;
/**
* @param schemeSendVO
* @return
* @throws Exception
*/
@Override
public
JsonViewObject
schemeSend
(
SchemeSendVO
schemeSendVO
)
throws
Exception
{
JsonViewObject
jsonViewObject
=
rpcService
(
httpRestUtil
,
rpcUri
,
null
,
JSONObject
.
toJSONString
(
schemeSendVO
));
if
(
StringUtils
.
endsWithIgnoreCase
(
"success"
,
jsonViewObject
.
getStatus
()))
{
return
jsonViewObject
.
success
(
"万集标准协议下发方案成功!"
);
}
return
jsonViewObject
;
}
@Override
public
JsonViewObject
planSend
(
PlanSendVO
planSendVO
)
throws
Exception
{
JsonViewObject
jsonViewObject
=
rpcService
(
httpRestUtil
,
rpcUri
,
null
,
JSONObject
.
toJSONString
(
planSendVO
));
if
(
StringUtils
.
endsWithIgnoreCase
(
"success"
,
jsonViewObject
.
getStatus
()))
{
return
jsonViewObject
.
success
(
"万集标准协议下发计划成功!"
);
}
return
jsonViewObject
;
}
@Override
public
JsonViewObject
scheduleSend
(
ScheduleSendVO
scheduleSendVO
)
throws
Exception
{
JsonViewObject
jsonViewObject
=
rpcService
(
httpRestUtil
,
rpcUri
,
null
,
JSONObject
.
toJSONString
(
scheduleSendVO
));
if
(
StringUtils
.
endsWithIgnoreCase
(
"success"
,
jsonViewObject
.
getStatus
()))
{
return
jsonViewObject
.
success
(
"万集标准协议下发时间表成功!"
);
}
return
jsonViewObject
;
}
@Override
public
JsonViewObject
lockControl
(
ControlCommandVO
commandVO
)
throws
Exception
{
JsonViewObject
jsonViewObject
=
rpcService
(
httpRestUtil
,
rpcUri
,
null
,
JSONObject
.
toJSONString
(
commandVO
));
if
(
StringUtils
.
endsWithIgnoreCase
(
"success"
,
jsonViewObject
.
getStatus
()))
{
return
jsonViewObject
.
success
(
"万集标准协议锁定控制成功!"
);
}
return
jsonViewObject
;
}
@Override
public
JsonViewObject
stepControl
(
String
crossId
,
Integer
command
,
Integer
stepNum
)
throws
Exception
{
HashMap
<
String
,
Object
>
paraMap
=
new
HashMap
<>();
paraMap
.
put
(
"crossId"
,
crossId
);
paraMap
.
put
(
"command"
,
command
);
paraMap
.
put
(
"stepNum"
,
stepNum
);
JsonViewObject
jsonViewObject
=
rpcService
(
httpRestUtil
,
rpcUri
,
null
,
JSONObject
.
toJSONString
(
paraMap
));
if
(
StringUtils
.
endsWithIgnoreCase
(
"success"
,
jsonViewObject
.
getStatus
()))
{
return
jsonViewObject
.
success
(
"万集标准协议步进控制成功!"
);
}
return
jsonViewObject
;
}
@Override
public
JsonViewObject
setSignalControl
(
String
crossId
,
Integer
command
,
Integer
commandType
)
throws
Exception
{
HashMap
<
String
,
Object
>
paraMap
=
new
HashMap
<>();
paraMap
.
put
(
"crossId"
,
crossId
);
paraMap
.
put
(
"command"
,
command
);
paraMap
.
put
(
"commandType"
,
commandType
);
JsonViewObject
jsonViewObject
=
rpcService
(
httpRestUtil
,
rpcUri
,
null
,
JSONObject
.
toJSONString
(
paraMap
));
if
(
StringUtils
.
endsWithIgnoreCase
(
"success"
,
jsonViewObject
.
getStatus
()))
{
return
jsonViewObject
.
success
(
"万集标准协议设置信号机控制模式成功!"
);
}
return
jsonViewObject
;
}
@Override
public
JsonViewObject
recoverSchedule
(
String
crossId
)
throws
Exception
{
HashMap
<
String
,
Object
>
paraMap
=
new
HashMap
<>();
paraMap
.
put
(
"crossId"
,
crossId
);
JsonViewObject
jsonViewObject
=
rpcService
(
httpRestUtil
,
rpcUri
,
null
,
JSONObject
.
toJSONString
(
paraMap
));
if
(
StringUtils
.
endsWithIgnoreCase
(
"success"
,
jsonViewObject
.
getStatus
()))
{
return
jsonViewObject
.
success
(
"万集标准协议恢复时间表成功!"
);
}
return
jsonViewObject
;
}
@Override
public
JsonViewObject
phaseTimingSend
(
PhaseTimingSendVO
phaseTimingSendVO
)
throws
Exception
{
JsonViewObject
jsonViewObject
=
rpcService
(
httpRestUtil
,
rpcUri
,
null
,
JSONObject
.
toJSONString
(
phaseTimingSendVO
));
if
(
StringUtils
.
endsWithIgnoreCase
(
"success"
,
jsonViewObject
.
getStatus
()))
{
return
jsonViewObject
.
success
(
"万集标准协议下发相位配时成功!"
);
}
return
jsonViewObject
;
}
@Override
public
JsonViewObject
phaseDiffSend
()
{
return
null
;
}
}
signal-utc-service/src/main/java/net/wanji/utc/service/rpc
service/r
pcService.java
→
signal-utc-service/src/main/java/net/wanji/utc/service/rpc
/R
pcService.java
View file @
69a0745d
package
net
.
wanji
.
utc
.
service
.
rpc
service
;
package
net
.
wanji
.
utc
.
service
.
rpc
;
import
net.wanji.utc.entity.JsonViewObject
;
import
net.wanji.utc.entity.JsonViewObject
;
import
net.wanji.utc.util.HttpRestUtil
;
import
net.wanji.utc.util.HttpRestUtil
;
...
@@ -10,7 +10,7 @@ import java.util.Objects;
...
@@ -10,7 +10,7 @@ import java.util.Objects;
* @author duanruiming
* @author duanruiming
* @date 2023/01/09 9:57
* @date 2023/01/09 9:57
*/
*/
public
interface
r
pcService
{
public
interface
R
pcService
{
/**
/**
* 远程调用信号机设备
* 远程调用信号机设备
...
...
signal-utc-service/src/main/java/net/wanji/utc/service/runninginfo/WanJiRunningStatusService.java
→
signal-utc-service/src/main/java/net/wanji/utc/service/runninginfo/WanJi
Common
RunningStatusService.java
View file @
69a0745d
package
net
.
wanji
.
utc
.
service
.
runninginfo
;
package
net
.
wanji
.
utc
.
service
.
runninginfo
;
import
net.wanji.utc.po.SignalStatusLogPO
;
import
net.wanji.utc.po.SignalStatusLogPO
;
import
net.wanji.utc.service.rpc
service.r
pcService
;
import
net.wanji.utc.service.rpc
.R
pcService
;
import
net.wanji.utc.vo.LightsStatusVO
;
import
net.wanji.utc.vo.LightsStatusVO
;
import
java.util.List
;
import
java.util.List
;
...
@@ -10,7 +10,7 @@ import java.util.List;
...
@@ -10,7 +10,7 @@ import java.util.List;
* @author duanruiming
* @author duanruiming
* @date 2023/01/11 17:32
* @date 2023/01/11 17:32
*/
*/
public
interface
WanJi
RunningStatusService
extends
r
pcService
{
public
interface
WanJi
CommonRunningStatusService
extends
R
pcService
{
/**
/**
* 标准获取路口实时运行状态接口,包括告警数据
* 标准获取路口实时运行状态接口,包括告警数据
* @param crossIdList
* @param crossIdList
...
...
signal-utc-service/src/main/java/net/wanji/utc/service/runninginfo/impl/SignalStatusServiceImpl.java
View file @
69a0745d
...
@@ -15,7 +15,7 @@ import net.wanji.utc.po.SignalStatusLogPO;
...
@@ -15,7 +15,7 @@ import net.wanji.utc.po.SignalStatusLogPO;
import
net.wanji.utc.service.runninginfo.HkLightsStatusService
;
import
net.wanji.utc.service.runninginfo.HkLightsStatusService
;
import
net.wanji.utc.service.runninginfo.HkRunningStatusService
;
import
net.wanji.utc.service.runninginfo.HkRunningStatusService
;
import
net.wanji.utc.service.runninginfo.SignalStatusService
;
import
net.wanji.utc.service.runninginfo.SignalStatusService
;
import
net.wanji.utc.service.runninginfo.WanJiRunningStatusService
;
import
net.wanji.utc.service.runninginfo.WanJi
Common
RunningStatusService
;
import
net.wanji.utc.util.ListUtil
;
import
net.wanji.utc.util.ListUtil
;
import
net.wanji.utc.util.RedisUtil
;
import
net.wanji.utc.util.RedisUtil
;
import
net.wanji.utc.vo.LightsStatusVO
;
import
net.wanji.utc.vo.LightsStatusVO
;
...
@@ -38,7 +38,7 @@ public class SignalStatusServiceImpl implements SignalStatusService {
...
@@ -38,7 +38,7 @@ public class SignalStatusServiceImpl implements SignalStatusService {
private
final
HkLightsStatusService
hkLightsStatusService
;
private
final
HkLightsStatusService
hkLightsStatusService
;
private
final
RedisUtil
redisUtil
;
private
final
RedisUtil
redisUtil
;
private
final
SignalStatusLogMapper
signalStatusLogMapper
;
private
final
SignalStatusLogMapper
signalStatusLogMapper
;
private
final
WanJiRunningStatusService
wanJiRunningStatusService
;
private
final
WanJi
Common
RunningStatusService
wanJiRunningStatusService
;
@Override
@Override
@Transactional
@Transactional
...
...
signal-utc-service/src/main/java/net/wanji/utc/service/runninginfo/impl/WanJiRunningStatusServiceImpl.java
→
signal-utc-service/src/main/java/net/wanji/utc/service/runninginfo/impl/WanJi
Common
RunningStatusServiceImpl.java
View file @
69a0745d
...
@@ -5,7 +5,7 @@ import lombok.RequiredArgsConstructor;
...
@@ -5,7 +5,7 @@ import lombok.RequiredArgsConstructor;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.utc.entity.JsonViewObject
;
import
net.wanji.utc.entity.JsonViewObject
;
import
net.wanji.utc.po.SignalStatusLogPO
;
import
net.wanji.utc.po.SignalStatusLogPO
;
import
net.wanji.utc.service.runninginfo.WanJiRunningStatusService
;
import
net.wanji.utc.service.runninginfo.WanJi
Common
RunningStatusService
;
import
net.wanji.utc.util.HttpRestUtil
;
import
net.wanji.utc.util.HttpRestUtil
;
import
net.wanji.utc.vo.LightsStatusVO
;
import
net.wanji.utc.vo.LightsStatusVO
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
...
@@ -21,7 +21,7 @@ import java.util.Map;
...
@@ -21,7 +21,7 @@ import java.util.Map;
@Slf4j
@Slf4j
@Service
@Service
@RequiredArgsConstructor
@RequiredArgsConstructor
public
class
WanJi
RunningStatusServiceImpl
implements
WanJi
RunningStatusService
{
public
class
WanJi
CommonRunningStatusServiceImpl
implements
WanJiCommon
RunningStatusService
{
private
final
HttpRestUtil
httpRestUtil
;
private
final
HttpRestUtil
httpRestUtil
;
@Value
(
"url"
)
@Value
(
"url"
)
...
@@ -43,6 +43,6 @@ public class WanJiRunningStatusServiceImpl implements WanJiRunningStatusService
...
@@ -43,6 +43,6 @@ public class WanJiRunningStatusServiceImpl implements WanJiRunningStatusService
@Override
@Override
public
JsonViewObject
rpcService
(
HttpRestUtil
httpRestUtil
,
String
url
,
Map
<
String
,
String
>
headers
,
String
param
)
{
public
JsonViewObject
rpcService
(
HttpRestUtil
httpRestUtil
,
String
url
,
Map
<
String
,
String
>
headers
,
String
param
)
{
return
WanJiRunningStatusService
.
super
.
rpcService
(
httpRestUtil
,
url
,
headers
,
param
);
return
WanJi
Common
RunningStatusService
.
super
.
rpcService
(
httpRestUtil
,
url
,
headers
,
param
);
}
}
}
}
signal-utc-service/src/main/java/net/wanji/utc/service/staticinfo/Wan
j
iCommonStaticInfoService.java
→
signal-utc-service/src/main/java/net/wanji/utc/service/staticinfo/Wan
J
iCommonStaticInfoService.java
View file @
69a0745d
...
@@ -2,7 +2,7 @@ package net.wanji.utc.service.staticinfo;
...
@@ -2,7 +2,7 @@ package net.wanji.utc.service.staticinfo;
import
net.wanji.utc.common.Result
;
import
net.wanji.utc.common.Result
;
import
net.wanji.utc.po.CrossSchedulesPO
;
import
net.wanji.utc.po.CrossSchedulesPO
;
import
net.wanji.utc.service.rpc
service.r
pcService
;
import
net.wanji.utc.service.rpc
.R
pcService
;
import
net.wanji.utc.vo.PlanSectionVO
;
import
net.wanji.utc.vo.PlanSectionVO
;
import
net.wanji.utc.vo.SchemePhaseLightsVO
;
import
net.wanji.utc.vo.SchemePhaseLightsVO
;
...
@@ -12,7 +12,7 @@ import java.util.List;
...
@@ -12,7 +12,7 @@ import java.util.List;
* @author duanruiming
* @author duanruiming
* @date 2023/01/09 9:20
* @date 2023/01/09 9:20
*/
*/
public
interface
Wan
jiCommonStaticInfoService
extends
r
pcService
{
public
interface
Wan
JiCommonStaticInfoService
extends
R
pcService
{
/**
/**
* 静态参数,获取万集标准方案数据-方案信息、相位信息、灯组信息
* 静态参数,获取万集标准方案数据-方案信息、相位信息、灯组信息
...
...
signal-utc-service/src/main/java/net/wanji/utc/service/staticinfo/impl/StaticInfoServiceImpl.java
View file @
69a0745d
...
@@ -8,7 +8,7 @@ import net.wanji.utc.dto.PlanSectionDTO;
...
@@ -8,7 +8,7 @@ import net.wanji.utc.dto.PlanSectionDTO;
import
net.wanji.utc.dto.SchemePhaseLightsDTO
;
import
net.wanji.utc.dto.SchemePhaseLightsDTO
;
import
net.wanji.utc.mapper.*
;
import
net.wanji.utc.mapper.*
;
import
net.wanji.utc.po.*
;
import
net.wanji.utc.po.*
;
import
net.wanji.utc.service.staticinfo.Wan
j
iCommonStaticInfoService
;
import
net.wanji.utc.service.staticinfo.Wan
J
iCommonStaticInfoService
;
import
net.wanji.utc.service.staticinfo.*
;
import
net.wanji.utc.service.staticinfo.*
;
import
net.wanji.utc.vo.PlanSectionVO
;
import
net.wanji.utc.vo.PlanSectionVO
;
import
net.wanji.utc.vo.SchemePhaseLightsVO
;
import
net.wanji.utc.vo.SchemePhaseLightsVO
;
...
@@ -39,7 +39,7 @@ public class StaticInfoServiceImpl implements StaticInfoService {
...
@@ -39,7 +39,7 @@ public class StaticInfoServiceImpl implements StaticInfoService {
private
final
CrossPlanMapper
crossPlanMapper
;
private
final
CrossPlanMapper
crossPlanMapper
;
private
final
CrossSectionMapper
crossSectionMapper
;
private
final
CrossSectionMapper
crossSectionMapper
;
private
final
CrossSchedulesMapper
crossSchedulesMapper
;
private
final
CrossSchedulesMapper
crossSchedulesMapper
;
private
final
Wan
j
iCommonStaticInfoService
wanjiCommonStaticInfoService
;
private
final
Wan
J
iCommonStaticInfoService
wanjiCommonStaticInfoService
;
@Override
@Override
@Transactional
@Transactional
...
...
signal-utc-service/src/main/java/net/wanji/utc/service/staticinfo/impl/Wan
j
iCommonStaticInfoServiceImpl.java
→
signal-utc-service/src/main/java/net/wanji/utc/service/staticinfo/impl/Wan
J
iCommonStaticInfoServiceImpl.java
View file @
69a0745d
...
@@ -7,7 +7,7 @@ import net.wanji.utc.common.Result;
...
@@ -7,7 +7,7 @@ import net.wanji.utc.common.Result;
import
net.wanji.utc.entity.JsonViewObject
;
import
net.wanji.utc.entity.JsonViewObject
;
import
net.wanji.utc.mapper.*
;
import
net.wanji.utc.mapper.*
;
import
net.wanji.utc.po.*
;
import
net.wanji.utc.po.*
;
import
net.wanji.utc.service.staticinfo.Wan
j
iCommonStaticInfoService
;
import
net.wanji.utc.service.staticinfo.Wan
J
iCommonStaticInfoService
;
import
net.wanji.utc.util.HttpRestUtil
;
import
net.wanji.utc.util.HttpRestUtil
;
import
net.wanji.utc.vo.PlanSectionVO
;
import
net.wanji.utc.vo.PlanSectionVO
;
import
net.wanji.utc.vo.SchemePhaseLightsVO
;
import
net.wanji.utc.vo.SchemePhaseLightsVO
;
...
@@ -27,7 +27,7 @@ import java.util.Objects;
...
@@ -27,7 +27,7 @@ import java.util.Objects;
@Slf4j
@Slf4j
@Service
@Service
@RequiredArgsConstructor
@RequiredArgsConstructor
public
class
Wan
jiCommonStaticInfoServiceImpl
implements
Wanj
iCommonStaticInfoService
{
public
class
Wan
JiCommonStaticInfoServiceImpl
implements
WanJ
iCommonStaticInfoService
{
private
final
HttpRestUtil
httpRestUtil
;
private
final
HttpRestUtil
httpRestUtil
;
@Value
(
"url"
)
@Value
(
"url"
)
...
@@ -123,6 +123,6 @@ public class WanjiCommonStaticInfoServiceImpl implements WanjiCommonStaticInfoSe
...
@@ -123,6 +123,6 @@ public class WanjiCommonStaticInfoServiceImpl implements WanjiCommonStaticInfoSe
@Override
@Override
public
JsonViewObject
rpcService
(
HttpRestUtil
httpRestUtil
,
String
url
,
Map
<
String
,
String
>
headers
,
String
param
)
{
public
JsonViewObject
rpcService
(
HttpRestUtil
httpRestUtil
,
String
url
,
Map
<
String
,
String
>
headers
,
String
param
)
{
return
Wan
j
iCommonStaticInfoService
.
super
.
rpcService
(
httpRestUtil
,
url
,
headers
,
param
);
return
Wan
J
iCommonStaticInfoService
.
super
.
rpcService
(
httpRestUtil
,
url
,
headers
,
param
);
}
}
}
}
signal-utc-service/src/main/java/net/wanji/utc/vo/ControlCommandVO.java
View file @
69a0745d
...
@@ -6,6 +6,7 @@ import lombok.Data;
...
@@ -6,6 +6,7 @@ import lombok.Data;
import
javax.validation.constraints.Max
;
import
javax.validation.constraints.Max
;
import
javax.validation.constraints.Min
;
import
javax.validation.constraints.Min
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.NotNull
;
/**
/**
...
@@ -16,10 +17,10 @@ import javax.validation.constraints.NotNull;
...
@@ -16,10 +17,10 @@ import javax.validation.constraints.NotNull;
*/
*/
@Data
@Data
@ApiModel
(
value
=
"ControlCommandVO"
,
description
=
"相位锁定实体类"
)
@ApiModel
(
value
=
"ControlCommandVO"
,
description
=
"相位锁定实体类"
)
public
class
ControlCommandVO
{
public
class
ControlCommandVO
{
@ApiModelProperty
(
value
=
"路口编号"
,
notes
=
"路口编号"
)
@ApiModelProperty
(
value
=
"路口编号"
,
notes
=
"路口编号"
)
@Not
Null
(
message
=
"路口编号不可为空"
)
@Not
Blank
(
message
=
"路口编号不可为空"
)
private
String
crossCode
;
private
String
crossCode
;
/**
/**
...
...
signal-utc-service/src/main/java/net/wanji/utc/vo/PhaseTimingSendVO.java
View file @
69a0745d
...
@@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty;
...
@@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty;
import
lombok.Getter
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.Setter
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotEmpty
;
import
java.util.List
;
import
java.util.List
;
/**
/**
...
@@ -19,9 +21,11 @@ import java.util.List;
...
@@ -19,9 +21,11 @@ import java.util.List;
public
class
PhaseTimingSendVO
{
public
class
PhaseTimingSendVO
{
@ApiModelProperty
(
value
=
"路口编号"
,
notes
=
"路口编号"
)
@ApiModelProperty
(
value
=
"路口编号"
,
notes
=
"路口编号"
)
@NotBlank
(
message
=
"路口编号不可为空"
)
private
String
crossCode
;
private
String
crossCode
;
@ApiModelProperty
(
value
=
"需要下发的相位列表"
,
notes
=
"需要下发的相位列表"
)
@ApiModelProperty
(
value
=
"需要下发的相位列表"
,
notes
=
"需要下发的相位列表"
)
@NotEmpty
(
message
=
"相位列表不可为空"
)
private
List
<
Phase
>
phaseList
;
private
List
<
Phase
>
phaseList
;
/**
/**
...
...
signal-utc-service/src/main/java/net/wanji/utc/vo/PlanSendVO.java
View file @
69a0745d
...
@@ -4,8 +4,9 @@ import io.swagger.annotations.ApiModel;
...
@@ -4,8 +4,9 @@ import io.swagger.annotations.ApiModel;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.Setter
;
import
net.wanji.utc.common.baseentity.BaseCrossInfo
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotEmpty
;
import
java.util.List
;
import
java.util.List
;
/**
/**
...
@@ -20,8 +21,10 @@ import java.util.List;
...
@@ -20,8 +21,10 @@ import java.util.List;
public
class
PlanSendVO
{
public
class
PlanSendVO
{
@ApiModelProperty
(
value
=
"路口编号"
,
notes
=
"路口编号"
)
@ApiModelProperty
(
value
=
"路口编号"
,
notes
=
"路口编号"
)
@NotBlank
(
message
=
"路口编号不可为空"
)
private
String
crossCode
;
private
String
crossCode
;
@ApiModelProperty
(
value
=
"计划列表"
,
notes
=
"计划列表"
)
@ApiModelProperty
(
value
=
"计划列表"
,
notes
=
"计划列表"
)
@NotEmpty
(
message
=
"计划列表不可为空"
)
private
List
<
Plan
>
planList
;
private
List
<
Plan
>
planList
;
@Setter
@Setter
...
...
signal-utc-service/src/main/java/net/wanji/utc/vo/ScheduleSendVO.java
View file @
69a0745d
...
@@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty;
...
@@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty;
import
lombok.Getter
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.Setter
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotEmpty
;
import
java.util.List
;
import
java.util.List
;
/**
/**
...
@@ -19,8 +21,10 @@ import java.util.List;
...
@@ -19,8 +21,10 @@ import java.util.List;
public
class
ScheduleSendVO
{
public
class
ScheduleSendVO
{
@ApiModelProperty
(
value
=
"路口编号"
,
notes
=
"路口编号"
)
@ApiModelProperty
(
value
=
"路口编号"
,
notes
=
"路口编号"
)
@NotBlank
(
message
=
"路口编号不可为空"
)
private
String
crossCode
;
private
String
crossCode
;
@ApiModelProperty
(
value
=
"时间表"
,
notes
=
"时间表"
)
@ApiModelProperty
(
value
=
"时间表"
,
notes
=
"时间表"
)
@NotEmpty
(
message
=
"时间表不可为空"
)
private
List
<
Schedule
>
schedules
;
private
List
<
Schedule
>
schedules
;
@Setter
@Setter
...
...
signal-utc-service/src/main/java/net/wanji/utc/vo/SchemeSendVO.java
View file @
69a0745d
...
@@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty;
...
@@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty;
import
lombok.Getter
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.Setter
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotEmpty
;
import
java.util.List
;
import
java.util.List
;
/**
/**
...
@@ -19,9 +21,11 @@ import java.util.List;
...
@@ -19,9 +21,11 @@ import java.util.List;
public
class
SchemeSendVO
{
public
class
SchemeSendVO
{
@ApiModelProperty
(
value
=
"路口编号"
,
notes
=
"路口编号"
)
@ApiModelProperty
(
value
=
"路口编号"
,
notes
=
"路口编号"
)
@NotBlank
(
message
=
"路口编号不可为空"
)
private
String
crossCode
;
private
String
crossCode
;
@ApiModelProperty
(
value
=
"方案列表"
,
notes
=
"方案列表"
)
@ApiModelProperty
(
value
=
"方案列表"
,
notes
=
"方案列表"
)
@NotEmpty
(
message
=
"方案列表不可为空"
)
private
List
<
Pattern
>
patternList
;
private
List
<
Pattern
>
patternList
;
/**
/**
...
...
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