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
75808894
Commit
75808894
authored
Dec 08, 2022
by
wuxiaokai
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
控制指令接口-锁定控制/步进控制/全红控制/黄闪控制/关灯控制
parent
e28421f3
Changes
19
Show whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
187 additions
and
1268 deletions
+187
-1268
pom.xml
signal-utc-service/pom.xml
+5
-0
MybatisPlusGenerator.java
...ice/src/main/java/net/wanji/utc/MybatisPlusGenerator.java
+0
-81
Constants.java
...rc/main/java/net/wanji/utc/common/constant/Constants.java
+0
-5
ControlCommandController.java
...va/net/wanji/utc/controller/ControlCommandController.java
+51
-46
TCrossInfo.java
...ervice/src/main/java/net/wanji/utc/entity/TCrossInfo.java
+0
-101
TCrossLights.java
...vice/src/main/java/net/wanji/utc/entity/TCrossLights.java
+0
-89
TCrossPhase.java
...rvice/src/main/java/net/wanji/utc/entity/TCrossPhase.java
+0
-137
TCrossPhaseLights.java
...src/main/java/net/wanji/utc/entity/TCrossPhaseLights.java
+0
-65
TCrossPlan.java
...ervice/src/main/java/net/wanji/utc/entity/TCrossPlan.java
+0
-65
TCrossSchedules.java
...e/src/main/java/net/wanji/utc/entity/TCrossSchedules.java
+0
-77
TCrossScheme.java
...vice/src/main/java/net/wanji/utc/entity/TCrossScheme.java
+0
-95
TCrossSection.java
...ice/src/main/java/net/wanji/utc/entity/TCrossSection.java
+0
-89
TManufacturerApiInfo.java
.../main/java/net/wanji/utc/entity/TManufacturerApiInfo.java
+0
-83
TManufacturerInfo.java
...src/main/java/net/wanji/utc/entity/TManufacturerInfo.java
+0
-77
TSignalStatusLog.java
.../src/main/java/net/wanji/utc/entity/TSignalStatusLog.java
+0
-65
TSystemOperateLog.java
...src/main/java/net/wanji/utc/entity/TSystemOperateLog.java
+0
-83
ControlCommandService.java
.../net/wanji/utc/service/control/ControlCommandService.java
+6
-6
HKControlCommandServiceImpl.java
...t/wanji/utc/service/impl/HKControlCommandServiceImpl.java
+91
-104
ControlCommandVO.java
...vice/src/main/java/net/wanji/utc/vo/ControlCommandVO.java
+34
-0
No files found.
signal-utc-service/pom.xml
View file @
75808894
...
...
@@ -155,6 +155,11 @@
<artifactId>
spring-boot-configuration-processor
</artifactId>
<optional>
true
</optional>
</dependency>
<dependency>
<groupId>
org.hibernate
</groupId>
<artifactId>
hibernate-validator
</artifactId>
<version>
6.0.1.Final
</version>
</dependency>
</dependencies>
<build>
...
...
signal-utc-service/src/main/java/net/wanji/utc/MybatisPlusGenerator.java
deleted
100644 → 0
View file @
e28421f3
package
net
.
wanji
.
utc
;
import
com.baomidou.mybatisplus.generator.FastAutoGenerator
;
import
com.baomidou.mybatisplus.generator.config.OutputFile
;
import
com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine
;
import
java.util.Collections
;
/**
* @author wuxiaokai
* @date 2022/4/14 10:50:34
*/
public
class
MybatisPlusGenerator
{
private
static
final
String
PROJECT_PATH
=
System
.
getProperty
(
"user.dir"
);
private
static
final
String
OUTPUT_DIR
=
"signal-utc-service/src/main/java"
;
private
static
final
String
AUTHOR
=
"wj"
;
private
static
final
String
URL
=
"jdbc:mysql://10.100.1.74:3306/t_signal_utc?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&sessionVariables=sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'&useSSL=false&useCursorFetch=true"
;
private
static
final
String
DRIVER_NAME
=
"com.mysql.cj.jdbc.Driver"
;
private
static
final
String
USERNAME
=
"root"
;
private
static
final
String
PASSWORD
=
"Wanji300552"
;
private
static
final
String
[]
TABLES
=
{
"t_cross_info"
,
"t_cross_lights"
,
"t_cross_phase"
,
"t_cross_phase_lights"
,
"t_cross_plan"
,
"t_cross_schedules"
,
"t_cross_scheme"
,
"t_cross_section"
,
"t_manufacturer_api_info"
,
"t_manufacturer_info"
,
"t_signal_status_log"
,
"t_system_operate_log"
};
private
static
final
String
TEMPLATE_PATH
=
"/templates/mapper.xml.ftl"
;
private
static
final
String
MAPPER_PATH
=
"signal-utc-service/src/main/resources/mapper/"
;
private
static
final
String
PARENT
=
"net.wanji.utc"
;
public
static
void
main
(
String
[]
args
)
{
FastAutoGenerator
.
create
(
URL
,
USERNAME
,
PASSWORD
)
.
globalConfig
(
builder
->
{
builder
.
author
(
AUTHOR
)
// 设置作者
// .enableSwagger() // 开启 swagger 模式
.
fileOverride
()
// 覆盖已生成文件
.
outputDir
(
OUTPUT_DIR
)
// 指定输出目录
.
disableOpenDir
();
//禁止打开输出目录
})
.
packageConfig
(
builder
->
{
builder
.
parent
(
PARENT
)
// 设置父包名
//.moduleName(null) // 设置父包模块名
.
pathInfo
(
Collections
.
singletonMap
(
OutputFile
.
mapperXml
,
MAPPER_PATH
));
// 设置mapperXml生成路径
})
.
strategyConfig
(
builder
->
{
builder
.
addInclude
(
TABLES
)
// 设置需要生成的表名
//.addTablePrefix(null) // 设置过滤表前缀
//Service 策略配置
.
serviceBuilder
()
.
formatServiceFileName
(
"%sService"
)
//格式化 service 接口文件名称
.
formatServiceImplFileName
(
"%sServiceImpl"
)
//格式化 service 实现类文件名称
//Entity 策略配置
.
entityBuilder
()
.
enableChainModel
()
//开启链式模型
.
enableLombok
()
//开启Lombok模型
.
enableTableFieldAnnotation
()
//开启生成实体时生成字段注解
//.logicDeleteColumnName("deleted")//默认删除属性名称(数据库)
//.logicDeletePropertyName("deleted")//默认删除属性名称(实体)
//.versionColumnName("version")//乐观锁属性名(数据库)
//.versionPropertyName("version")//乐观锁属性名(实体)
//.addTableFills(new Column("create_Time", FieldFill.INSERT))//添加表字段填充(自动填充)
//.addTableFills(new Column("update_Time", FieldFill.INSERT_UPDATE))//添加表字段填充(自动填充)
//controller 策略配置
.
controllerBuilder
()
.
enableRestStyle
();
//开启生成@RestController 控制器
})
.
templateEngine
(
new
FreemarkerTemplateEngine
())
// 使用Freemarker引擎模板,默认的是Velocity引擎模板
.
execute
();
}
}
signal-utc-service/src/main/java/net/wanji/utc/common/constant/Constants.java
View file @
75808894
package
net
.
wanji
.
utc
.
common
.
constant
;
import
net.wanji.utc.common.commonentity.HttpRequest
;
import
net.wanji.utc.common.typeenum.BasicEnum
;
import
net.wanji.utc.po.ManufacturerApiInfoPO
;
import
net.wanji.utc.vo.CrossLanesVo
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
java.sql.Connection
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.ConcurrentHashMap
;
@Component
...
...
signal-utc-service/src/main/java/net/wanji/utc/controller/ControlCommandController.java
View file @
75808894
package
net
.
wanji
.
utc
.
controller
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.utc.common.Result
;
import
net.wanji.utc.service.control.ControlCommandService
;
import
net.wanji.utc.vo.
PhaseLock
VO
;
import
net.wanji.utc.vo.
ControlCommand
VO
;
import
net.wanji.utc.vo.PlanSendVO
;
import
net.wanji.utc.vo.SchemeSendVO
;
import
net.wanji.utc.vo.ScheduleSendVO
;
import
net.wanji.utc.vo.SchemeSendVO
;
import
net.wanji.utc.vo.timeplan.TimePlanVO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
...
...
@@ -44,22 +47,6 @@ public class ControlCommandController {
return
hkControlCommandService
.
schemeSend
(
schemeSendVO
);
}
/**
* todo
* 相位配时下发?
* 下发信号机方案?
*
* @param code 信号机id
* @param timePlans 配时方案实体类
* @return {@link Result}<{@link T}>
* @throws InterruptedException 中断异常
*/
@ApiOperation
(
value
=
"相位配时下发-相位的绿灯、绿闪、行闪、黄灯、红灯配时下发"
,
notes
=
"相位配时下发-相位的绿灯、绿闪、行闪、黄灯、红灯配时下发"
)
@PostMapping
(
"/phaseTimingSend"
)
public
<
T
>
Result
<
T
>
phaseTimingSend
(
@RequestParam
String
code
,
@RequestBody
List
<
TimePlanVO
>
timePlans
)
throws
InterruptedException
{
return
hkControlCommandService
.
phaseTimingSend
(
code
,
timePlans
);
}
/**
* 下发信号机计划
*
...
...
@@ -73,42 +60,69 @@ public class ControlCommandController {
}
/**
* 全红控制
* 时间表下发
*
* @param scheduleSendVO 时间表下发VO
* @return {@link Result}<{@link T}>
* @throws Exception 异常
*/
@ApiOperation
(
value
=
"时间表下发-时间表信息"
,
notes
=
"时间表下发-时间表信息"
)
@PostMapping
(
"/scheduleSend"
)
public
<
T
>
Result
<
T
>
scheduleSend
(
@RequestBody
ScheduleSendVO
scheduleSendVO
)
throws
Exception
{
return
hkControlCommandService
.
scheduleSend
(
scheduleSendVO
);
}
/**
* 相位配时下发
*
* @param code 信号机id
* @param command 指令
* @param timePlans 配时方案实体类
* @return {@link Result}<{@link T}>
* @throws InterruptedException 中断异常
*/
@ApiOperation
(
value
=
"相位配时下发-相位的绿灯、绿闪、行闪、黄灯、红灯配时下发"
,
notes
=
"相位配时下发-相位的绿灯、绿闪、行闪、黄灯、红灯配时下发"
)
@PostMapping
(
"/phaseTimingSend"
)
public
<
T
>
Result
<
T
>
phaseTimingSend
(
@RequestParam
String
code
,
@RequestBody
List
<
TimePlanVO
>
timePlans
)
throws
Exception
{
return
hkControlCommandService
.
phaseTimingSend
(
code
,
timePlans
);
}
/**
* 全红控制
*
* @param commandVO 控制指令VO
* @return {@link Result}<{@link T}>
* @throws Exception 异常
*/
@ApiOperation
(
value
=
"全红控制-路口全红控制/恢复"
,
notes
=
"全红控制-路口全红控制/恢复"
)
@PostMapping
(
"/allRedControl"
)
public
<
T
>
Result
<
T
>
allRedControl
(
@Request
Param
String
code
,
@RequestParam
Integer
command
)
throws
Exception
{
return
hkControlCommandService
.
setSignalControl
(
co
de
,
command
,
ALL_RED_CONTROL
);
public
<
T
>
Result
<
T
>
allRedControl
(
@Request
Body
@Validated
ControlCommandVO
commandVO
)
throws
Exception
{
return
hkControlCommandService
.
setSignalControl
(
co
mmandVO
.
getCrossCode
(),
commandVO
.
getCommand
()
,
ALL_RED_CONTROL
);
}
/**
* 黄闪控制
*
* @param code 信号id
* @param command 命令
* @param commandVO 控制指令VO
* @return {@link Result}<{@link T}>
* @throws Exception 异常
*/
@ApiOperation
(
value
=
"黄闪控制-路口黄闪控制/恢复"
,
notes
=
"黄闪控制-路口黄闪控制/恢复"
)
@PostMapping
(
"/yellowLightControl"
)
public
<
T
>
Result
<
T
>
yellowLightControl
(
@Request
Param
String
code
,
@RequestParam
Integer
command
)
throws
Exception
{
return
hkControlCommandService
.
setSignalControl
(
co
de
,
command
,
YELLOW_LIGHT_CONTROL
);
public
<
T
>
Result
<
T
>
yellowLightControl
(
@Request
Body
@Validated
ControlCommandVO
commandVO
)
throws
Exception
{
return
hkControlCommandService
.
setSignalControl
(
co
mmandVO
.
getCrossCode
(),
commandVO
.
getCommand
()
,
YELLOW_LIGHT_CONTROL
);
}
/**
* 关灯控制
*
* @param code 信号id
* @param command 命令
* @param commandVO 控制指令VO
* @return {@link Result}<{@link T}>
* @throws Exception 异常
*/
@ApiOperation
(
value
=
"关灯控制-路口关灯控制/开灯"
,
notes
=
"关灯控制-路口关灯控制/开灯"
)
@PostMapping
(
"/closeLightControl"
)
public
<
T
>
Result
<
T
>
closeLightControl
(
@Request
Param
String
code
,
@RequestParam
Integer
command
)
throws
Exception
{
return
hkControlCommandService
.
setSignalControl
(
co
de
,
command
,
CLOSE_LIGHT_CONTROL
);
public
<
T
>
Result
<
T
>
closeLightControl
(
@Request
Body
@Validated
ControlCommandVO
commandVO
)
throws
Exception
{
return
hkControlCommandService
.
setSignalControl
(
co
mmandVO
.
getCrossCode
(),
commandVO
.
getCommand
()
,
CLOSE_LIGHT_CONTROL
);
}
/**
...
...
@@ -120,6 +134,10 @@ public class ControlCommandController {
* @return {@link Result}<{@link T}>
*/
@ApiOperation
(
value
=
"步进控制-步进控制/恢复"
,
notes
=
"步进控制-步进控制/恢复"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"command"
,
value
=
"1 开始步进 0 取消步进"
,
paramType
=
"query"
,
required
=
true
,
dataType
=
"int"
),
@ApiImplicitParam
(
name
=
"stepNum"
,
value
=
"0 顺序步进 n 跳过n个相位"
,
paramType
=
"query"
,
required
=
true
,
dataType
=
"int"
),
})
@PostMapping
(
"/stepControl"
)
public
<
T
>
Result
<
T
>
stepControl
(
@RequestParam
String
code
,
@RequestParam
Integer
command
,
...
...
@@ -139,29 +157,16 @@ public class ControlCommandController {
return
hkControlCommandService
.
recoverSchedule
(
code
);
}
/**
* 时间表下发
*
* @param scheduleSendVO 时间表下发VO
* @return {@link Result}<{@link T}>
* @throws Exception 异常
*/
@ApiOperation
(
value
=
"时间表下发-时间表信息"
,
notes
=
"时间表下发-时间表信息"
)
@PostMapping
(
"/scheduleSend"
)
public
<
T
>
Result
<
T
>
scheduleSend
(
@RequestBody
ScheduleSendVO
scheduleSendVO
)
throws
Exception
{
return
hkControlCommandService
.
scheduleSend
(
scheduleSendVO
);
}
/**
* 锁定控制
*
* @param
phaseLock 相位锁定实体类
* @param
commandVO 控制指令VO
* @return {@link Result}<{@link T}>
* @throws Exception 异常
*/
@ApiOperation
(
value
=
"锁定控制-相位锁定/解锁"
,
notes
=
"锁定控制-相位锁定/解锁"
)
@PostMapping
(
"/lockControl"
)
public
<
T
>
Result
<
T
>
lockControl
(
@RequestBody
PhaseLockVO
phaseLock
)
throws
Exception
{
return
hkControlCommandService
.
lockControl
(
phaseLock
);
public
<
T
>
Result
<
T
>
lockControl
(
@RequestBody
ControlCommandVO
commandVO
)
throws
Exception
{
return
hkControlCommandService
.
lockControl
(
commandVO
);
}
}
signal-utc-service/src/main/java/net/wanji/utc/entity/TCrossInfo.java
deleted
100644 → 0
View file @
e28421f3
package
net
.
wanji
.
utc
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.experimental.Accessors
;
/**
* <p>
* 路口基础表
* </p>
*
* @author wj
* @since 2022-11-15
*/
@Getter
@Setter
@Accessors
(
chain
=
true
)
@TableName
(
"t_cross_info"
)
public
class
TCrossInfo
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 路口ID
*/
@TableId
(
"id"
)
private
String
id
;
/**
* 路口名称
*/
@TableField
(
"name"
)
private
String
name
;
/**
* 信号机编号
*/
@TableField
(
"code"
)
private
String
code
;
/**
* 厂商ID
*/
@TableField
(
"manufacturer_id"
)
private
Integer
manufacturerId
;
/**
* 信号机IP
*/
@TableField
(
"ip"
)
private
String
ip
;
/**
* 信号机端口
*/
@TableField
(
"port"
)
private
Integer
port
;
/**
* 经纬度
*/
@TableField
(
"location"
)
private
String
location
;
/**
* 版本号
*/
@TableField
(
"version"
)
private
String
version
;
/**
* 型号
*/
@TableField
(
"po"
)
private
String
model
;
/**
* 安装时间
*/
@TableField
(
"install_time"
)
private
LocalDateTime
installTime
;
/**
* 创建时间
*/
@TableField
(
"gmt_create"
)
private
LocalDateTime
gmtCreate
;
/**
* 修改时间
*/
@TableField
(
"gmt_modified"
)
private
LocalDateTime
gmtModified
;
}
signal-utc-service/src/main/java/net/wanji/utc/entity/TCrossLights.java
deleted
100644 → 0
View file @
e28421f3
package
net
.
wanji
.
utc
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.experimental.Accessors
;
/**
* <p>
* 路口灯组表
* </p>
*
* @author wj
* @since 2022-11-15
*/
@Getter
@Setter
@Accessors
(
chain
=
true
)
@TableName
(
"t_cross_lights"
)
public
class
TCrossLights
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 灯组ID
*/
@TableId
(
"id"
)
private
Integer
id
;
/**
* 灯组号
*/
@TableField
(
"no"
)
private
String
no
;
/**
* 灯组名称
*/
@TableField
(
"name"
)
private
String
name
;
/**
* 灯组类型:1箭头,2圆饼,3行人
*/
@TableField
(
"type"
)
private
Integer
type
;
/**
* 灯组方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北
*/
@TableField
(
"dir"
)
private
Integer
dir
;
/**
* 灯组转向:1左转;2右转;3直行;4左掉头;5直左;6直右;7右掉头;8向左合流;9向右合流;10左转加掉头;11右转加掉头;12直行加左掉头;13直行加右掉头;14左转右转;15左直右;16左转右转加掉头;17左直掉头;18左直右掉头;20行人
*/
@TableField
(
"turn"
)
private
Integer
turn
;
/**
* 路口ID
*/
@TableField
(
"cross_id"
)
private
String
crossId
;
/**
* 行人进出口:1进口,2出口,3进出口
*/
@TableField
(
"in_out_type"
)
private
Integer
inOutType
;
/**
* 创建时间
*/
@TableField
(
"gmt_create"
)
private
LocalDateTime
gmtCreate
;
/**
* 修改时间
*/
@TableField
(
"gmt_modified"
)
private
LocalDateTime
gmtModified
;
}
signal-utc-service/src/main/java/net/wanji/utc/entity/TCrossPhase.java
deleted
100644 → 0
View file @
e28421f3
package
net
.
wanji
.
utc
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.experimental.Accessors
;
/**
* <p>
* 路口相位表
* </p>
*
* @author wj
* @since 2022-11-15
*/
@Getter
@Setter
@Accessors
(
chain
=
true
)
@TableName
(
"t_cross_phase"
)
public
class
TCrossPhase
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 相位ID
*/
@TableId
(
"id"
)
private
Integer
id
;
/**
* 相位号
*/
@TableField
(
"no"
)
private
String
no
;
/**
* 相位名称
*/
@TableField
(
"name"
)
private
String
name
;
/**
* 相位序号
*/
@TableField
(
"sort"
)
private
Integer
sort
;
/**
* 路口ID
*/
@TableField
(
"cross_id"
)
private
String
crossId
;
/**
* 方案ID
*/
@TableField
(
"plan_id"
)
private
Integer
planId
;
/**
* 环号
*/
@TableField
(
"ring_no"
)
private
Integer
ringNo
;
/**
* 控制模式:1定周期;2绿灯;3黄灯;4红灯;5关灯;6绿闪;7黄闪;8红闪
*/
@TableField
(
"control_mode"
)
private
Integer
controlMode
;
/**
* 相位时间
*/
@TableField
(
"phase_time"
)
private
Integer
phaseTime
;
/**
* 绿灯时间
*/
@TableField
(
"green_time"
)
private
Integer
greenTime
;
/**
* 绿闪时间
*/
@TableField
(
"green_flash_time"
)
private
Integer
greenFlashTime
;
/**
* 行闪时间
*/
@TableField
(
"ped_flash_time"
)
private
Integer
pedFlashTime
;
/**
* 黄灯时间
*/
@TableField
(
"yellow_time"
)
private
Integer
yellowTime
;
/**
* 红灯时间
*/
@TableField
(
"red_time"
)
private
Integer
redTime
;
/**
* 最小绿灯时间
*/
@TableField
(
"min_green_time"
)
private
Integer
minGreenTime
;
/**
* 最大绿灯时间
*/
@TableField
(
"max_green_time"
)
private
Integer
maxGreenTime
;
/**
* 创建时间
*/
@TableField
(
"gmt_create"
)
private
LocalDateTime
gmtCreate
;
/**
* 修改时间
*/
@TableField
(
"gmt_modified"
)
private
LocalDateTime
gmtModified
;
}
signal-utc-service/src/main/java/net/wanji/utc/entity/TCrossPhaseLights.java
deleted
100644 → 0
View file @
e28421f3
package
net
.
wanji
.
utc
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.experimental.Accessors
;
/**
* <p>
* 相位灯组关系表
* </p>
*
* @author wj
* @since 2022-11-15
*/
@Getter
@Setter
@Accessors
(
chain
=
true
)
@TableName
(
"t_cross_phase_lights"
)
public
class
TCrossPhaseLights
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 主键
*/
@TableId
(
"id"
)
private
Integer
id
;
/**
* 灯组ID
*/
@TableField
(
"lights_id"
)
private
Integer
lightsId
;
/**
* 相位ID
*/
@TableField
(
"phase_id"
)
private
Integer
phaseId
;
/**
* 路口ID
*/
@TableField
(
"cross_id"
)
private
String
crossId
;
/**
* 创建时间
*/
@TableField
(
"gmt_create"
)
private
LocalDateTime
gmtCreate
;
/**
* 修改时间
*/
@TableField
(
"gmt_modified"
)
private
LocalDateTime
gmtModified
;
}
signal-utc-service/src/main/java/net/wanji/utc/entity/TCrossPlan.java
deleted
100644 → 0
View file @
e28421f3
package
net
.
wanji
.
utc
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.experimental.Accessors
;
/**
* <p>
* 路口计划表
* </p>
*
* @author wj
* @since 2022-11-15
*/
@Getter
@Setter
@Accessors
(
chain
=
true
)
@TableName
(
"t_cross_plan"
)
public
class
TCrossPlan
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 计划ID
*/
@TableId
(
"id"
)
private
Integer
id
;
/**
* 计划号
*/
@TableField
(
"no"
)
private
String
no
;
/**
* 计划名称
*/
@TableField
(
"name"
)
private
String
name
;
/**
* 路口ID
*/
@TableField
(
"cross_id"
)
private
String
crossId
;
/**
* 创建时间
*/
@TableField
(
"gmt_create"
)
private
LocalDateTime
gmtCreate
;
/**
* 修改时间
*/
@TableField
(
"gmt_modified"
)
private
LocalDateTime
gmtModified
;
}
signal-utc-service/src/main/java/net/wanji/utc/entity/TCrossSchedules.java
deleted
100644 → 0
View file @
e28421f3
package
net
.
wanji
.
utc
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.experimental.Accessors
;
/**
* <p>
* 时间表
* </p>
*
* @author wj
* @since 2022-11-15
*/
@Getter
@Setter
@Accessors
(
chain
=
true
)
@TableName
(
"t_cross_schedules"
)
public
class
TCrossSchedules
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 日期ID
*/
@TableId
(
"id"
)
private
Integer
id
;
/**
* 日期名称
*/
@TableField
(
"name"
)
private
String
name
;
/**
* 路口ID
*/
@TableField
(
"cross_id"
)
private
String
crossId
;
/**
* 计划ID
*/
@TableField
(
"plan_id"
)
private
Integer
planId
;
/**
* 星期:1周一,2周二,3周三,4周四,5周五,6周六,7周日,0特殊日期
*/
@TableField
(
"week"
)
private
Integer
week
;
/**
* 特殊日期
*/
@TableField
(
"special_date"
)
private
LocalDateTime
specialDate
;
/**
* 创建时间
*/
@TableField
(
"gmt_create"
)
private
LocalDateTime
gmtCreate
;
/**
* 修改时间
*/
@TableField
(
"gmt_modified"
)
private
LocalDateTime
gmtModified
;
}
signal-utc-service/src/main/java/net/wanji/utc/entity/TCrossScheme.java
deleted
100644 → 0
View file @
e28421f3
package
net
.
wanji
.
utc
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.experimental.Accessors
;
/**
* <p>
* 信号方案表
* </p>
*
* @author wj
* @since 2022-11-15
*/
@Getter
@Setter
@Accessors
(
chain
=
true
)
@TableName
(
"t_cross_scheme"
)
public
class
TCrossScheme
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 方案ID
*/
@TableId
(
"id"
)
private
Integer
id
;
/**
* 方案号
*/
@TableField
(
"no"
)
private
String
no
;
/**
* 方案名称
*/
@TableField
(
"name"
)
private
String
name
;
/**
* 路口ID
*/
@TableField
(
"cross_id"
)
private
String
crossId
;
/**
* 周期
*/
@TableField
(
"cycle"
)
private
Integer
cycle
;
/**
* 协调相位ID
*/
@TableField
(
"coord_phase"
)
private
Integer
coordPhase
;
/**
* 相位差
*/
@TableField
(
"offset"
)
private
Integer
offset
;
/**
* 数据来源:1信号机;2平台
*/
@TableField
(
"source"
)
private
Integer
source
;
/**
* 删除标识:1删除;0未删除
*/
@TableField
(
"is_deleted"
)
private
Integer
isDeleted
;
/**
* 创建时间
*/
@TableField
(
"gmt_create"
)
private
LocalDateTime
gmtCreate
;
/**
* 修改时间
*/
@TableField
(
"gmt_modified"
)
private
LocalDateTime
gmtModified
;
}
signal-utc-service/src/main/java/net/wanji/utc/entity/TCrossSection.java
deleted
100644 → 0
View file @
e28421f3
package
net
.
wanji
.
utc
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.experimental.Accessors
;
/**
* <p>
* 路口时段表
* </p>
*
* @author wj
* @since 2022-11-15
*/
@Getter
@Setter
@Accessors
(
chain
=
true
)
@TableName
(
"t_cross_section"
)
public
class
TCrossSection
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 时段ID
*/
@TableId
(
"id"
)
private
Integer
id
;
/**
* 时段号
*/
@TableField
(
"no"
)
private
String
no
;
/**
* 开始时间
*/
@TableField
(
"start_time"
)
private
String
startTime
;
/**
* 结束时间
*/
@TableField
(
"end_time"
)
private
String
endTime
;
/**
* 路口ID
*/
@TableField
(
"cross_id"
)
private
String
crossId
;
/**
* 计划ID
*/
@TableField
(
"plan_id"
)
private
Integer
planId
;
/**
* 控制模式:1定周期;2绿波协调;3黄闪;4全红;5关灯;6单点自适应;7全感应;8半感应;9
*/
@TableField
(
"control_mode"
)
private
Integer
controlMode
;
/**
* 方案ID
*/
@TableField
(
"sceme_id"
)
private
Integer
scemeId
;
/**
* 创建时间
*/
@TableField
(
"gmt_create"
)
private
LocalDateTime
gmtCreate
;
/**
* 修改时间
*/
@TableField
(
"gmt_modified"
)
private
LocalDateTime
gmtModified
;
}
signal-utc-service/src/main/java/net/wanji/utc/entity/TManufacturerApiInfo.java
deleted
100644 → 0
View file @
e28421f3
package
net
.
wanji
.
utc
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.experimental.Accessors
;
/**
* <p>
* 厂商平台接口表
* </p>
*
* @author wj
* @since 2022-11-15
*/
@Getter
@Setter
@Accessors
(
chain
=
true
)
@TableName
(
"t_manufacturer_api_info"
)
public
class
TManufacturerApiInfo
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 接口ID
*/
@TableId
(
"id"
)
private
Integer
id
;
/**
* 接口代码
*/
@TableField
(
"code"
)
private
String
code
;
/**
* 接口名称
*/
@TableField
(
"name"
)
private
String
name
;
/**
* 接口类型:1、静态;2、动态;3、控制
*/
@TableField
(
"type"
)
private
Integer
type
;
/**
* 请求方式:GET、POST
*/
@TableField
(
"method"
)
private
String
method
;
/**
* 接口地址
*/
@TableField
(
"address"
)
private
String
address
;
/**
* 厂商ID
*/
@TableField
(
"manufacturer_id"
)
private
Integer
manufacturerId
;
/**
* 创建时间
*/
@TableField
(
"gmt_create"
)
private
LocalDateTime
gmtCreate
;
/**
* 修改时间
*/
@TableField
(
"gmt_modified"
)
private
LocalDateTime
gmtModified
;
}
signal-utc-service/src/main/java/net/wanji/utc/entity/TManufacturerInfo.java
deleted
100644 → 0
View file @
e28421f3
package
net
.
wanji
.
utc
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.experimental.Accessors
;
/**
* <p>
* 厂商基础表
* </p>
*
* @author wj
* @since 2022-11-15
*/
@Getter
@Setter
@Accessors
(
chain
=
true
)
@TableName
(
"t_manufacturer_info"
)
public
class
TManufacturerInfo
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 厂商ID
*/
@TableId
(
"id"
)
private
Integer
id
;
/**
* 厂商代码
*/
@TableField
(
"code"
)
private
String
code
;
/**
* 厂商名称
*/
@TableField
(
"name"
)
private
String
name
;
/**
* 厂商简称
*/
@TableField
(
"nick_name"
)
private
String
nickName
;
/**
* 平台地址
*/
@TableField
(
"address"
)
private
String
address
;
/**
* 维护单位
*/
@TableField
(
"maintenance_unit"
)
private
String
maintenanceUnit
;
/**
* 创建时间
*/
@TableField
(
"gmt_create"
)
private
LocalDateTime
gmtCreate
;
/**
* 修改时间
*/
@TableField
(
"gmt_modified"
)
private
LocalDateTime
gmtModified
;
}
signal-utc-service/src/main/java/net/wanji/utc/entity/TSignalStatusLog.java
deleted
100644 → 0
View file @
e28421f3
package
net
.
wanji
.
utc
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.experimental.Accessors
;
/**
* <p>
* 信号机状态日志表
* </p>
*
* @author wj
* @since 2022-11-15
*/
@Getter
@Setter
@Accessors
(
chain
=
true
)
@TableName
(
"t_signal_status_log"
)
public
class
TSignalStatusLog
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 日志ID
*/
@TableId
(
"id"
)
private
Integer
id
;
/**
* 信号机ID
*/
@TableField
(
"signal_id"
)
private
String
signalId
;
/**
* 信号状态:0离线;1在线
*/
@TableField
(
"status"
)
private
Integer
status
;
/**
* 故障类型:0正常;1检测器故障;2时钟故障;3电源故障;4驱动模块故障;5信号灯故障;6箱门开启;7方案错误;8绿冲突;9红全熄;10行人红熄;
*/
@TableField
(
"fault_type"
)
private
Integer
faultType
;
/**
* 控制类型:1时间表;2全红;3黄闪;4锁定;5中心优化;6MEC优化;7现场手动
*/
@TableField
(
"control_type"
)
private
Integer
controlType
;
/**
* 创建时间
*/
@TableField
(
"gmt_create"
)
private
LocalDateTime
gmtCreate
;
}
signal-utc-service/src/main/java/net/wanji/utc/entity/TSystemOperateLog.java
deleted
100644 → 0
View file @
e28421f3
package
net
.
wanji
.
utc
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.experimental.Accessors
;
/**
* <p>
* 系统操作日志表
* </p>
*
* @author wj
* @since 2022-11-15
*/
@Getter
@Setter
@Accessors
(
chain
=
true
)
@TableName
(
"t_system_operate_log"
)
public
class
TSystemOperateLog
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 日志ID
*/
@TableId
(
"id"
)
private
Integer
id
;
/**
* 访问地址
*/
@TableField
(
"url"
)
private
String
url
;
/**
* 调用方IP
*/
@TableField
(
"ip"
)
private
String
ip
;
/**
* 操作用户
*/
@TableField
(
"opt_user"
)
private
String
optUser
;
/**
* 操作类型:1添加;2删除;3修改;4查询
*/
@TableField
(
"opt_type"
)
private
Integer
optType
;
/**
* 请求参数
*/
@TableField
(
"args"
)
private
String
args
;
/**
* 响应状态
*/
@TableField
(
"status"
)
private
String
status
;
/**
* 响应结果
*/
@TableField
(
"result"
)
private
String
result
;
/**
* 创建时间
*/
@TableField
(
"gmt_create"
)
private
LocalDateTime
gmtCreate
;
}
signal-utc-service/src/main/java/net/wanji/utc/service/control/ControlCommandService.java
View file @
75808894
package
net
.
wanji
.
utc
.
service
.
control
;
import
net.wanji.utc.common.Result
;
import
net.wanji.utc.vo.
PhaseLock
VO
;
import
net.wanji.utc.vo.
ControlCommand
VO
;
import
net.wanji.utc.vo.PlanSendVO
;
import
net.wanji.utc.vo.SchemeSendVO
;
import
net.wanji.utc.vo.ScheduleSendVO
;
import
net.wanji.utc.vo.SchemeSendVO
;
import
net.wanji.utc.vo.timeplan.TimePlanVO
;
import
java.util.List
;
...
...
@@ -41,11 +41,11 @@ public interface ControlCommandService {
/**
* 锁定控制
*
* @param
phaseLock 相位锁定实体类
* @param
commandVO 控制指令VO
* @return {@link Result}<{@link T}>
* @throws Exception 异常
*/
<
T
>
Result
<
T
>
lockControl
(
PhaseLockVO
phaseLock
)
throws
Exception
;
<
T
>
Result
<
T
>
lockControl
(
ControlCommandVO
commandVO
)
throws
Exception
;
/**
* 步进控制
...
...
@@ -85,7 +85,7 @@ public interface ControlCommandService {
* @return {@link Result}<{@link T}>
* @throws InterruptedException 中断异常
*/
<
T
>
Result
<
T
>
phaseTimingSend
(
String
code
,
List
<
TimePlanVO
>
timePlans
)
throws
Interrupted
Exception
;
<
T
>
Result
<
T
>
phaseTimingSend
(
String
code
,
List
<
TimePlanVO
>
timePlans
)
throws
Exception
;
/**
* 相位差下发
...
...
signal-utc-service/src/main/java/net/wanji/utc/service/impl/HKControlCommandServiceImpl.java
View file @
75808894
...
...
@@ -27,16 +27,12 @@ import net.wanji.utc.vo.*;
import
net.wanji.utc.vo.timeplan.Phase
;
import
net.wanji.utc.vo.timeplan.Ring
;
import
net.wanji.utc.vo.timeplan.TimePlanVO
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.Future
;
import
java.util.stream.Collectors
;
import
static
net
.
wanji
.
utc
.
common
.
ResultEnum
.
BODY_NOT_MATCH
;
...
...
@@ -50,9 +46,6 @@ import static net.wanji.utc.common.constant.Constants.*;
@Service
(
"hkControlCommandService"
)
public
class
HKControlCommandServiceImpl
implements
ControlCommandService
{
@Value
(
"${signal.manufacturer.hk.artemisPath}"
)
private
String
artemisPath
;
@Resource
private
HkLightsStatusService
hkLightsStatusService
;
...
...
@@ -385,57 +378,65 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
}
@Override
public
<
T
>
Result
<
T
>
lockControl
(
PhaseLockVO
phaseLock
)
throws
Exception
{
CrossInfoPO
crossInfoPo
=
crossInfoMapper
.
selectByCode
(
phaseLock
.
get
Code
());
public
<
T
>
Result
<
T
>
lockControl
(
ControlCommandVO
commandVO
)
throws
Exception
{
CrossInfoPO
crossInfoPo
=
crossInfoMapper
.
selectByCode
(
commandVO
.
getCross
Code
());
if
(
crossInfoPo
==
null
)
{
throw
new
ControlException
(
BODY_NOT_MATCH
.
getResultCode
(),
"参数错误,信号机ID不正确。"
);
}
Integer
manufacturerId
=
crossInfoPo
.
getManufacturerId
();
if
(
manufacturerId
.
equals
(
BasicEnum
.
ManufacturerEnum
.
HK
.
getCode
()))
{
if
(
phaseLock
.
getCommand
().
equals
(
TRUE
))
{
return
updateManualLock
(
phaseLock
.
getCode
(),
phaseLock
.
getLockTime
());
}
else
{
return
controlSignal
(
phaseLock
.
getCode
(),
UNLOCK_RUNNING_CONTROL
);
}
}
else
{
// todo else
return
null
;
}
}
ManufacturerInfoPO
manufacturerInfoPO
=
manufacturerInfoMapper
.
selectById
(
crossInfoPo
.
getManufacturerId
());
if
(
manufacturerInfoPO
.
getCode
().
equals
(
BasicEnum
.
ManufacturerEnum
.
HK
.
getCode
()))
{
if
(
commandVO
.
getCommand
().
equals
(
TRUE
))
{
Map
<
String
,
Object
>
param
=
new
HashMap
<
String
,
Object
>()
{
private
static
final
long
serialVersionUID
=
7462850358909460605L
;
private
<
T
>
Result
<
T
>
updateManualLock
(
String
code
,
Integer
lockTime
)
throws
Exception
{
Map
<
String
,
Object
>
param
=
new
HashMap
<
String
,
Object
>()
{{
put
(
"crossCode"
,
code
);
{
put
(
"crossCode"
,
commandVO
.
getCrossCode
());
put
(
"controlType"
,
LOCK_RUNNING_CONTROL
);
}};
}
};
// 控制命令为灯态锁定时,设置相关车道参数信息
// 获取当前运行方案的相位id
List
<
SignalRunring
>
runrings
=
getSignalInfoVos
(
code
).
get
(
0
).
getRunrings
();
//
HK 为单环
List
<
SignalRunring
>
runrings
=
getSignalInfoVos
(
commandVO
.
getCrossCode
()
).
get
(
0
).
getRunrings
();
//
HK 为单环
Integer
phaseId
=
Integer
.
valueOf
(
runrings
.
get
(
0
).
getPhaseId
());
//获取某一路口下海康相位和车道关系
Map
<
Integer
,
JSONArray
>
laneArrayMap
=
new
HashMap
<>();
getPhaseRelationLanes
(
code
,
laneArrayMap
,
new
HashMap
<>());
// 获取某一路口下海康相位和车道关系
Map
<
Integer
,
JSONArray
>
laneArrayMap
=
getPhaseRelationLanes
(
commandVO
.
getCrossCode
());
param
.
put
(
"laneInfos"
,
laneArrayMap
.
get
(
phaseId
));
param
.
put
(
"controlNo"
,
0
);
//控制时长,单位 s,0 则持续控制
param
.
put
(
"duration"
,
lockTime
*
60
);
return
setSignalControl
(
param
);
// 控制时长,单位 s,0 则持续控制
param
.
put
(
"duration"
,
0
);
String
strResult
=
ArtemisHttpUtil
.
doPostStringArtemis
(
artemisConfig
,
PathUtil
.
getPathMapByApiCode
(
"SetSignalControl"
),
JSON
.
toJSONString
(
param
),
null
,
null
,
"application/json"
,
null
);
JSONObject
obj
=
JSON
.
parseObject
(
strResult
);
if
(
HK_SUCCESS_CODE
.
equals
(
obj
.
getInteger
(
HK_CODE_KEY
)))
{
return
Result
.
success
(
"相位锁定成功"
);
}
return
Result
.
error
(
"相位锁定失败"
);
}
else
{
return
controlSignal
(
commandVO
.
getCrossCode
(),
UNLOCK_RUNNING_CONTROL
);
}
}
else
{
// todo else
return
null
;
}
}
/**
* 获取某一路口下海康相位和车道关系
*
* @param crossCode 信号机唯一编号
* @
param laneArrayMap
相位与车道集合
* @
param laneNoMap 转向和方向与车道关系集合
* @
return {@link Map}<{@link Integer}, {@link JSONArray}>
相位与车道集合
* @
throws Exception 异常
*/
private
void
getPhaseRelationLanes
(
String
crossCode
,
Map
<
Integer
,
JSONArray
>
laneArrayMap
,
Map
<
String
,
Integer
>
laneNoMap
)
throws
Exception
{
private
Map
<
Integer
,
JSONArray
>
getPhaseRelationLanes
(
String
crossCode
)
throws
Exception
{
Map
<
String
,
String
>
path
=
PathUtil
.
getPathMapByApiCode
(
"queryPhaseRlatLanes"
);
Map
<
String
,
String
>
queryMap
=
new
HashMap
<>();
queryMap
.
put
(
"crossCode"
,
crossCode
);
String
strResult
=
ArtemisHttpUtil
.
doPostStringArtemis
(
artemisConfig
,
path
,
null
,
queryMap
,
null
,
"application/json"
,
null
);
String
strResult
=
ArtemisHttpUtil
.
doPostStringArtemis
(
artemisConfig
,
path
,
null
,
queryMap
,
null
,
"application/json"
,
null
);
JSONObject
object
=
JSON
.
parseObject
(
strResult
);
Map
<
Integer
,
JSONArray
>
laneArrayMap
=
new
HashMap
<>();
if
(
HK_SUCCESS_CODE
.
equals
(
object
.
getInteger
(
HK_CODE_KEY
)))
{
JSONObject
data
=
object
.
getJSONObject
(
"data"
);
JSONArray
phaseList
=
data
.
getJSONArray
(
"phaseList"
);
...
...
@@ -445,14 +446,9 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
JSONArray
laneList
=
lanesObject
.
getJSONArray
(
"lanes"
);
// 存入相位与车道集合
laneArrayMap
.
put
(
phaseNo
,
laneList
);
/*for (int j = 0; j < laneList.size(); j++) {
JSONObject laneObject = laneList.getJSONObject(j);
String key = laneObject.getString("direction") + SEPARATOR_UNDER_LINE + laneObject.getString("turn");
// 存入方向和转向对应的车道编号
laneNoMap.put(key, laneObject.getInteger("laneNo"));
}*/
}
}
return
laneArrayMap
;
}
@Override
...
...
@@ -461,10 +457,51 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
if
(
crossInfoPo
==
null
)
{
throw
new
ControlException
(
BODY_NOT_MATCH
.
getResultCode
(),
"参数错误,信号机ID不正确。"
);
}
Integer
manufacturerId
=
crossInfoPo
.
getManufacturerId
(
);
if
(
manufacturerI
d
.
equals
(
BasicEnum
.
ManufacturerEnum
.
HK
.
getCode
()))
{
ManufacturerInfoPO
manufacturerInfoPO
=
manufacturerInfoMapper
.
selectById
(
crossInfoPo
.
getManufacturerId
()
);
if
(
manufacturerI
nfoPO
.
getCode
()
.
equals
(
BasicEnum
.
ManufacturerEnum
.
HK
.
getCode
()))
{
if
(
command
.
equals
(
TRUE
))
{
return
updateManualStep
(
code
,
stepNum
);
Map
<
String
,
Object
>
param
=
new
HashMap
<
String
,
Object
>()
{
private
static
final
long
serialVersionUID
=
-
4365720940762732691L
;
{
put
(
"crossCode"
,
code
);
put
(
"controlType"
,
STEP_CONTROL
);
}
};
int
controlNo
=
0
;
if
(
0
!=
stepNum
)
{
//根据当前实时灯态获取运行的相位
LightsStatusVO
lightsStatusVO
=
getSignalInfoVos
(
code
).
get
(
0
);
//暂时按单环处理
String
phaseId
=
lightsStatusVO
.
getRunrings
().
get
(
0
).
getPhaseId
();
//获取方案数据列表
List
<
CrossPhasePO
>
baseCrossPhasePlanList
=
crossPhaseMapper
.
selectByCrossIdAndPlanId
(
lightsStatusVO
.
getCode
(),
lightsStatusVO
.
getPhasePlanId
());
Map
<
String
,
List
<
CrossPhasePO
>>
groupByPhase
=
baseCrossPhasePlanList
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossPhasePO:
:
getPhaseNo
));
//根据相位获取当前相序
int
newPhaseOrderId
=
0
;
for
(
String
key
:
groupByPhase
.
keySet
())
{
CrossPhasePO
crossPhase
=
groupByPhase
.
get
(
key
).
get
(
0
);
if
(
crossPhase
.
getPhaseNo
().
equals
(
phaseId
))
{
newPhaseOrderId
=
(
crossPhase
.
getSort
()
+
stepNum
)
%
groupByPhase
.
size
();
}
}
//根据相序获取相位
for
(
String
key
:
groupByPhase
.
keySet
())
{
CrossPhasePO
crossPhase
=
groupByPhase
.
get
(
key
).
get
(
0
);
if
(
newPhaseOrderId
==
crossPhase
.
getSort
())
{
controlNo
=
Integer
.
parseInt
(
crossPhase
.
getPhaseNo
());
}
}
}
param
.
put
(
"controlNo"
,
controlNo
);
String
strResult
=
ArtemisHttpUtil
.
doPostStringArtemis
(
artemisConfig
,
PathUtil
.
getPathMapByApiCode
(
"SetSignalControl"
),
JSON
.
toJSONString
(
param
),
null
,
null
,
"application/json"
,
null
);
JSONObject
obj
=
JSON
.
parseObject
(
strResult
);
if
(
HK_SUCCESS_CODE
.
equals
(
obj
.
getInteger
(
HK_CODE_KEY
)))
{
return
Result
.
success
();
}
return
Result
.
error
();
}
else
{
return
controlSignal
(
code
,
CANCEL_STEP_CONTROL
);
}
...
...
@@ -480,8 +517,8 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
if
(
crossInfoPo
==
null
)
{
throw
new
ControlException
(
BODY_NOT_MATCH
.
getResultCode
(),
"参数错误,信号机ID不正确。"
);
}
Integer
manufacturerId
=
crossInfoPo
.
getManufacturerId
(
);
if
(
manufacturerI
d
.
equals
(
BasicEnum
.
ManufacturerEnum
.
HK
.
getCode
()))
{
ManufacturerInfoPO
manufacturerInfoPO
=
manufacturerInfoMapper
.
selectById
(
crossInfoPo
.
getManufacturerId
()
);
if
(
manufacturerI
nfoPO
.
getCode
()
.
equals
(
BasicEnum
.
ManufacturerEnum
.
HK
.
getCode
()))
{
Integer
runningMode
=
command
.
equals
(
TRUE
)
?
commandType
:
NORMAL_RUNNING_CONTROL
;
return
controlSignal
(
code
,
runningMode
);
}
else
{
...
...
@@ -496,8 +533,8 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
if
(
crossInfoPo
==
null
)
{
throw
new
ControlException
(
BODY_NOT_MATCH
.
getResultCode
(),
"参数错误,信号机ID不正确。"
);
}
Integer
manufacturerId
=
crossInfoPo
.
getManufacturerId
(
);
if
(
manufacturerI
d
.
equals
(
BasicEnum
.
ManufacturerEnum
.
HK
.
getCode
()))
{
ManufacturerInfoPO
manufacturerInfoPO
=
manufacturerInfoMapper
.
selectById
(
crossInfoPo
.
getManufacturerId
()
);
if
(
manufacturerI
nfoPO
.
getCode
()
.
equals
(
BasicEnum
.
ManufacturerEnum
.
HK
.
getCode
()))
{
return
controlSignal
(
code
,
NORMAL_RUNNING_CONTROL
);
}
else
{
// todo else
...
...
@@ -506,7 +543,7 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
}
@Override
public
<
T
>
Result
<
T
>
phaseTimingSend
(
String
code
,
List
<
TimePlanVO
>
timePlans
)
throws
Interrupted
Exception
{
public
<
T
>
Result
<
T
>
phaseTimingSend
(
String
code
,
List
<
TimePlanVO
>
timePlans
)
throws
Exception
{
CrossInfoPO
crossInfoPo
=
crossInfoMapper
.
selectByCode
(
code
);
if
(
crossInfoPo
==
null
)
{
throw
new
ControlException
(
BODY_NOT_MATCH
.
getResultCode
(),
"参数错误,信号机ID不正确。"
);
...
...
@@ -542,8 +579,7 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
private
boolean
phaseTimingSend
(
TimePlanVO
timePlan
)
{
try
{
//获取某一路口下海康相位和车道关系
Map
<
Integer
,
JSONArray
>
laneArrayMap
=
new
HashMap
<>();
getPhaseRelationLanes
(
timePlan
.
getCode
(),
laneArrayMap
,
new
HashMap
<>());
Map
<
Integer
,
JSONArray
>
laneArrayMap
=
getPhaseRelationLanes
(
timePlan
.
getCode
());
//拼接参数
JSONObject
bodyObjectParam
=
new
JSONObject
();
JSONArray
patternArrayParam
=
new
JSONArray
();
...
...
@@ -594,55 +630,6 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
return
null
;
}
private
<
T
>
Result
<
T
>
updateManualStep
(
String
signalId
,
Integer
stepNum
)
{
JSONObject
bodyObjectParam
=
new
JSONObject
();
bodyObjectParam
.
put
(
"crossCode"
,
signalId
);
bodyObjectParam
.
put
(
"controlType"
,
STEP_CONTROL
);
int
controlNo
=
0
;
if
(
0
!=
stepNum
)
{
//根据当前实时灯态获取运行的相位
LightsStatusVO
lightsStatusVO
=
getSignalInfoVos
(
signalId
).
get
(
0
);
//暂时按单环处理
String
phaseId
=
lightsStatusVO
.
getRunrings
().
get
(
0
).
getPhaseId
();
//获取方案数据列表
List
<
CrossPhasePO
>
baseCrossPhasePlanList
=
crossPhaseMapper
.
selectByCrossIdAndPlanId
(
lightsStatusVO
.
getCode
(),
lightsStatusVO
.
getPhasePlanId
());
Map
<
String
,
List
<
CrossPhasePO
>>
groupByPhase
=
baseCrossPhasePlanList
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossPhasePO:
:
getPhaseNo
));
//根据相位获取当前相序
int
newPhaseOrderId
=
0
;
for
(
String
key
:
groupByPhase
.
keySet
())
{
CrossPhasePO
crossPhase
=
groupByPhase
.
get
(
key
).
get
(
0
);
if
(
crossPhase
.
getPhaseNo
().
equals
(
phaseId
))
{
newPhaseOrderId
=
(
crossPhase
.
getSort
()
+
stepNum
)
%
groupByPhase
.
size
();
}
}
//根据相序获取相位
for
(
String
key
:
groupByPhase
.
keySet
())
{
CrossPhasePO
crossPhase
=
groupByPhase
.
get
(
key
).
get
(
0
);
if
(
newPhaseOrderId
==
crossPhase
.
getSort
())
{
controlNo
=
Integer
.
parseInt
(
crossPhase
.
getPhaseNo
());
}
}
}
bodyObjectParam
.
put
(
"controlNo"
,
controlNo
);
return
setSignalControl
(
bodyObjectParam
);
}
private
<
T
>
Result
<
T
>
setSignalControl
(
Map
<
String
,
Object
>
param
)
{
try
{
String
strResult
=
ArtemisHttpUtil
.
doPostStringArtemis
(
artemisConfig
,
PathUtil
.
getPathMapByApiCode
(
"SetSignalControl"
),
JSON
.
toJSONString
(
param
),
null
,
null
,
"application/json"
,
null
);
JSONObject
obj
=
JSON
.
parseObject
(
strResult
);
if
(
HK_SUCCESS_CODE
.
equals
(
obj
.
getInteger
(
HK_CODE_KEY
)))
{
return
Result
.
success
();
}
return
Result
.
error
();
}
catch
(
Exception
e
)
{
log
.
error
(
"系统繁忙,服务器端内部错误!"
,
e
);
throw
new
ControlException
(
"系统繁忙,服务器端内部错误!"
);
}
}
/**
* @param code 信号机编号
* @param runningMode 0-多时段控制模式 1-关灯、2-黄闪、3-全红、11-取消步进控制、12-灯态锁定、13-灯态解锁
...
...
signal-utc-service/src/main/java/net/wanji/utc/vo/
PhaseLock
VO.java
→
signal-utc-service/src/main/java/net/wanji/utc/vo/
ControlCommand
VO.java
View file @
75808894
...
...
@@ -5,31 +5,30 @@ import io.swagger.annotations.ApiModelProperty;
import
lombok.Data
;
import
net.wanji.utc.common.baseentity.BaseCrossInfo
;
import
javax.validation.constraints.Max
;
import
javax.validation.constraints.Min
;
import
javax.validation.constraints.NotNull
;
/**
*
相位锁定实体类
*
控制指令VO
*
* @author wuxiaokai
* @date 2022/11/15 15:05:57
*/
@Data
@ApiModel
(
value
=
"
PhaseLock
VO"
,
description
=
"相位锁定实体类"
)
public
class
PhaseLockVO
extends
BaseCrossInfo
{
@ApiModel
(
value
=
"
ControlCommand
VO"
,
description
=
"相位锁定实体类"
)
public
class
ControlCommandVO
{
/**
* 相位编号
*/
@ApiModelProperty
(
value
=
"相位编号"
)
private
String
phaseId
;
@ApiModelProperty
(
value
=
"路口编号"
,
notes
=
"路口编号"
)
@NotNull
(
message
=
"路口编号不可为空"
)
private
String
crossCode
;
/**
* 1 锁定; 0 取消
*/
@ApiModelProperty
(
value
=
"1 锁定;0 取消"
)
@NotNull
(
message
=
"控制类型不可为空,1 锁定;0 取消"
)
@Max
(
value
=
1
,
message
=
"控制类型:1是;0否"
)
@Min
(
value
=
0
,
message
=
"控制类型:1是;0否"
)
private
Integer
command
;
/**
* 相位锁定时间, 999 永久锁定,必须手动取消。0~999 过了这个这个时间,自动取消锁定。
*/
@ApiModelProperty
(
value
=
"相位锁定时间,999 永久锁定,必须手动取消;0~999,自动取消"
)
private
Integer
lockTime
;
}
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