Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
amos-boot-biz
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
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
项目统一框架
amos-boot-biz
Commits
8e387215
Commit
8e387215
authored
Dec 14, 2021
by
helinlin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化联动控制逻辑
parent
1b48627c
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
217 additions
and
170 deletions
+217
-170
ControllerMapper.java
...oin/amos/boot/module/jcs/api/mapper/ControllerMapper.java
+1
-1
ControllerController.java
.../boot/module/jcs/biz/controller/ControllerController.java
+2
-6
ControllerEquipController.java
.../module/jcs/biz/controller/ControllerEquipController.java
+0
-1
ControllerEquipServiceImpl.java
...dule/jcs/biz/service/impl/ControllerEquipServiceImpl.java
+47
-9
ControllerServiceImpl.java
...ot/module/jcs/biz/service/impl/ControllerServiceImpl.java
+153
-137
PowerTransferServiceImpl.java
...module/jcs/biz/service/impl/PowerTransferServiceImpl.java
+14
-16
No files found.
amos-boot-module/amos-boot-module-api/amos-boot-module-jcs-api/src/main/java/com/yeejoin/amos/boot/module/jcs/api/mapper/ControllerMapper.java
View file @
8e387215
...
@@ -17,5 +17,5 @@ import java.util.List;
...
@@ -17,5 +17,5 @@ import java.util.List;
*/
*/
public
interface
ControllerMapper
extends
BaseMapper
<
Controller
>
{
public
interface
ControllerMapper
extends
BaseMapper
<
Controller
>
{
public
List
<
ControllerDto
>
getCurrentStationController
(
@Param
(
"sequenceNbr"
)
Long
sequenceNbr
);
List
<
ControllerDto
>
getCurrentStationController
(
@Param
(
"sequenceNbr"
)
Long
sequenceNbr
);
}
}
amos-boot-module/amos-boot-module-biz/amos-boot-module-jcs-biz/src/main/java/com/yeejoin/amos/boot/module/jcs/biz/controller/ControllerController.java
View file @
8e387215
...
@@ -3,19 +3,14 @@ package com.yeejoin.amos.boot.module.jcs.biz.controller;
...
@@ -3,19 +3,14 @@ package com.yeejoin.amos.boot.module.jcs.biz.controller;
import
com.yeejoin.amos.boot.biz.common.controller.BaseController
;
import
com.yeejoin.amos.boot.biz.common.controller.BaseController
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.ControllerDto
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.ControllerDto
;
import
com.yeejoin.amos.boot.module.jcs.api.entity.Controller
;
import
com.yeejoin.amos.boot.module.jcs.api.entity.Controller
;
import
com.yeejoin.amos.boot.module.jcs.api.entity.ControllerLog
;
import
com.yeejoin.amos.boot.module.jcs.api.enums.ControllerGroupEnum
;
import
com.yeejoin.amos.boot.module.jcs.api.enums.ControllerGroupEnum
;
import
com.yeejoin.amos.boot.module.jcs.api.enums.ControllerTypeEnum
;
import
com.yeejoin.amos.boot.module.jcs.api.enums.ControllerTypeEnum
;
import
com.yeejoin.amos.boot.module.jcs.biz.service.impl.ControllerEquipServiceImpl
;
import
com.yeejoin.amos.boot.module.jcs.biz.service.impl.ControllerLogServiceImpl
;
import
com.yeejoin.amos.boot.module.jcs.biz.service.impl.ControllerServiceImpl
;
import
com.yeejoin.amos.boot.module.jcs.biz.service.impl.ControllerServiceImpl
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
org.eclipse.paho.client.mqttv3.MqttException
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
import
org.typroject.tyboot.component.emq.EmqKeeper
;
import
org.typroject.tyboot.core.foundation.enumeration.UserType
;
import
org.typroject.tyboot.core.foundation.enumeration.UserType
;
import
org.typroject.tyboot.core.restful.doc.TycloudOperation
;
import
org.typroject.tyboot.core.restful.doc.TycloudOperation
;
import
org.typroject.tyboot.core.restful.utils.ResponseHelper
;
import
org.typroject.tyboot.core.restful.utils.ResponseHelper
;
...
@@ -41,7 +36,7 @@ public class ControllerController extends BaseController {
...
@@ -41,7 +36,7 @@ public class ControllerController extends BaseController {
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@ApiOperation
(
httpMethod
=
"POST"
,
value
=
"更新联动控制器状态"
,
notes
=
"更新联动控制器状态"
)
@ApiOperation
(
httpMethod
=
"POST"
,
value
=
"更新联动控制器状态"
,
notes
=
"更新联动控制器状态"
)
@PostMapping
(
value
=
"/updateControllerState"
)
@PostMapping
(
value
=
"/updateControllerState"
)
public
ResponseModel
<
Object
>
updateControllerState
(
@RequestBody
Controller
[]
controllers
)
{
public
ResponseModel
<
Object
>
updateControllerState
(
@RequestBody
Controller
Dto
[]
controllers
)
{
return
ResponseHelper
.
buildResponse
(
controllerServiceImpl
.
changeControllerState
(
controllers
));
return
ResponseHelper
.
buildResponse
(
controllerServiceImpl
.
changeControllerState
(
controllers
));
}
}
...
@@ -66,6 +61,7 @@ public class ControllerController extends BaseController {
...
@@ -66,6 +61,7 @@ public class ControllerController extends BaseController {
BeanUtils
.
copyProperties
(
controller
,
controllerDto
);
BeanUtils
.
copyProperties
(
controller
,
controllerDto
);
controllerDto
.
setTypeEnum
(
anEnum
);
controllerDto
.
setTypeEnum
(
anEnum
);
controllerDto
.
setTypeDescription
(
anEnum
.
getName
());
controllerDto
.
setTypeDescription
(
anEnum
.
getName
());
controllerDto
.
setState
(
"0"
);
controllerDtos
.
add
(
controllerDto
);
controllerDtos
.
add
(
controllerDto
);
}
}
});
});
...
...
amos-boot-module/amos-boot-module-biz/amos-boot-module-jcs-biz/src/main/java/com/yeejoin/amos/boot/module/jcs/biz/controller/ControllerEquipController.java
View file @
8e387215
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jcs
.
biz
.
controller
;
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jcs
.
biz
.
controller
;
import
com.yeejoin.amos.boot.biz.common.controller.BaseController
;
import
com.yeejoin.amos.boot.biz.common.controller.BaseController
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.ControllerEquipDto
;
import
com.yeejoin.amos.boot.module.jcs.api.entity.ControllerEquip
;
import
com.yeejoin.amos.boot.module.jcs.api.entity.ControllerEquip
;
import
com.yeejoin.amos.boot.module.jcs.biz.service.impl.ControllerEquipServiceImpl
;
import
com.yeejoin.amos.boot.module.jcs.biz.service.impl.ControllerEquipServiceImpl
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
...
...
amos-boot-module/amos-boot-module-biz/amos-boot-module-jcs-biz/src/main/java/com/yeejoin/amos/boot/module/jcs/biz/service/impl/ControllerEquipServiceImpl.java
View file @
8e387215
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jcs
.
biz
.
service
.
impl
;
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jcs
.
biz
.
service
.
impl
;
import
java.util.List
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.yeejoin.amos.boot.module.common.api.feign.JcsControlServerClient
;
import
com.yeejoin.amos.boot.module.common.api.feign.JcsControlServerClient
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.ControllerDto
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.ControllerEquipDto
;
import
com.yeejoin.amos.boot.module.jcs.api.entity.Controller
;
import
com.yeejoin.amos.boot.module.jcs.api.entity.Controller
;
import
com.yeejoin.amos.boot.module.jcs.api.entity.ControllerEquip
;
import
com.yeejoin.amos.boot.module.jcs.api.entity.ControllerLog
;
import
com.yeejoin.amos.boot.module.jcs.api.mapper.ControllerEquipMapper
;
import
com.yeejoin.amos.boot.module.jcs.api.service.IControllerEquipService
;
import
com.yeejoin.amos.boot.module.jcs.api.service.IControllerEquipService
;
import
org.eclipse.paho.client.mqttv3.MqttException
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.typroject.tyboot.component.emq.EmqKeeper
;
import
org.typroject.tyboot.core.rdbms.service.BaseService
;
import
org.typroject.tyboot.core.rdbms.service.BaseService
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.ControllerEquipDto
;
import
java.util.Date
;
import
com.yeejoin.amos.boot.module.jcs.api.entity.ControllerEquip
;
import
java.util.List
;
import
com.yeejoin.amos.boot.module.jcs.api.mapper.ControllerEquipMapper
;
/**
/**
* <pre>
* <pre>
...
@@ -26,10 +32,17 @@ import com.yeejoin.amos.boot.module.jcs.api.mapper.ControllerEquipMapper;
...
@@ -26,10 +32,17 @@ import com.yeejoin.amos.boot.module.jcs.api.mapper.ControllerEquipMapper;
*/
*/
@Service
@Service
public
class
ControllerEquipServiceImpl
extends
BaseService
<
ControllerEquipDto
,
ControllerEquip
,
ControllerEquipMapper
>
implements
IControllerEquipService
{
public
class
ControllerEquipServiceImpl
extends
BaseService
<
ControllerEquipDto
,
ControllerEquip
,
ControllerEquipMapper
>
implements
IControllerEquipService
{
public
static
final
String
CONTROLLER_STATE_CHANGED_TOPIC
=
"controllerStateChanged"
;
@Autowired
@Autowired
JcsControlServerClient
jcsControlServerClient
;
JcsControlServerClient
jcsControlServerClient
;
@Autowired
ControllerLogServiceImpl
controllerLogServiceImpl
;
@Autowired
private
EmqKeeper
emqKeeper
;
public
List
<
ControllerEquipDto
>
queryAllForList
()
{
public
List
<
ControllerEquipDto
>
queryAllForList
()
{
return
this
.
queryForList
(
""
,
false
);
return
this
.
queryForList
(
""
,
false
);
}
}
...
@@ -38,8 +51,10 @@ public class ControllerEquipServiceImpl extends BaseService<ControllerEquipDto,
...
@@ -38,8 +51,10 @@ public class ControllerEquipServiceImpl extends BaseService<ControllerEquipDto,
* 改变警铃状态 0关闭,1开启
* 改变警铃状态 0关闭,1开启
*/
*/
@Async
@Async
public
void
changeBell
(
Controller
controller
,
String
type
)
{
public
void
changeBell
(
Controller
Dto
controller
,
String
type
)
{
if
(
controller
==
null
)
return
;
if
(
controller
==
null
)
return
;
controller
.
setState
(
type
);
saveLog
(
controller
);
List
<
ControllerEquip
>
list
=
getControllerEquips
(
controller
);
List
<
ControllerEquip
>
list
=
getControllerEquips
(
controller
);
list
.
forEach
(
controllerEquip
->
jcsControlServerClient
.
sendBellAction
(
controllerEquip
.
getNum
(),
type
));
list
.
forEach
(
controllerEquip
->
jcsControlServerClient
.
sendBellAction
(
controllerEquip
.
getNum
(),
type
));
}
}
...
@@ -48,8 +63,10 @@ public class ControllerEquipServiceImpl extends BaseService<ControllerEquipDto,
...
@@ -48,8 +63,10 @@ public class ControllerEquipServiceImpl extends BaseService<ControllerEquipDto,
* 改变广播状态 0关闭,1开启
* 改变广播状态 0关闭,1开启
*/
*/
@Async
@Async
public
void
changeBroadcast
(
Controller
controller
,
String
type
)
{
public
void
changeBroadcast
(
Controller
Dto
controller
,
String
type
)
{
if
(
controller
==
null
)
return
;
if
(
controller
==
null
)
return
;
controller
.
setState
(
type
);
saveLog
(
controller
);
List
<
ControllerEquip
>
list
=
getControllerEquips
(
controller
);
List
<
ControllerEquip
>
list
=
getControllerEquips
(
controller
);
list
.
forEach
(
controllerEquip
->
jcsControlServerClient
.
sendFileAction
(
controllerEquip
.
getNum
(),
""
));
list
.
forEach
(
controllerEquip
->
jcsControlServerClient
.
sendFileAction
(
controllerEquip
.
getNum
(),
""
));
}
}
...
@@ -58,14 +75,35 @@ public class ControllerEquipServiceImpl extends BaseService<ControllerEquipDto,
...
@@ -58,14 +75,35 @@ public class ControllerEquipServiceImpl extends BaseService<ControllerEquipDto,
* 改变车库门状态 0关闭,1开启
* 改变车库门状态 0关闭,1开启
*/
*/
@Async
@Async
public
void
changeDoor
(
Controller
controller
,
String
type
)
{
public
void
changeDoor
(
Controller
Dto
controller
,
String
type
)
{
if
(
controller
==
null
)
return
;
if
(
controller
==
null
)
return
;
controller
.
setState
(
type
);
saveLog
(
controller
);
List
<
ControllerEquip
>
list
=
getControllerEquips
(
controller
);
List
<
ControllerEquip
>
list
=
getControllerEquips
(
controller
);
list
.
forEach
(
controllerEquip
->
jcsControlServerClient
.
writeStateAction
(
controller
.
getIp
(),
controller
.
getPort
(),
Integer
.
parseInt
(
controllerEquip
.
getNum
()),
type
));
list
.
forEach
(
controllerEquip
->
jcsControlServerClient
.
writeStateAction
(
controller
.
getIp
(),
controller
.
getPort
(),
Integer
.
parseInt
(
controllerEquip
.
getNum
()),
type
));
}
}
private
List
<
ControllerEquip
>
getControllerEquips
(
Controller
controller
)
{
private
List
<
ControllerEquip
>
getControllerEquips
(
Controller
Dto
controller
)
{
LambdaQueryWrapper
<
ControllerEquip
>
wrapper
=
new
LambdaQueryWrapper
<
ControllerEquip
>().
eq
(
ControllerEquip:
:
getControllerSeq
,
controller
.
getSequenceNbr
());
LambdaQueryWrapper
<
ControllerEquip
>
wrapper
=
new
LambdaQueryWrapper
<
ControllerEquip
>().
eq
(
ControllerEquip:
:
getControllerSeq
,
controller
.
getSequenceNbr
());
return
list
(
wrapper
);
return
list
(
wrapper
);
}
}
/**
* 保存操作日志
*/
private
void
saveLog
(
ControllerDto
controller
)
{
if
(
controller
==
null
)
return
;
ControllerLog
controllerLog
=
new
ControllerLog
();
controllerLog
.
setControllerSeq
(
controller
.
getSequenceNbr
());
controllerLog
.
setState
(
controller
.
getState
());
controllerLog
.
setExecuteDate
(
new
Date
());
controllerLogServiceImpl
.
save
(
controllerLog
);
// 分发状态变更通知
try
{
String
value
=
new
ObjectMapper
().
writeValueAsString
(
controller
);
emqKeeper
.
getMqttClient
().
publish
(
CONTROLLER_STATE_CHANGED_TOPIC
,
value
.
getBytes
(),
2
,
true
);
}
catch
(
MqttException
|
JsonProcessingException
e
)
{
e
.
printStackTrace
();
}
}
}
}
amos-boot-module/amos-boot-module-biz/amos-boot-module-jcs-biz/src/main/java/com/yeejoin/amos/boot/module/jcs/biz/service/impl/ControllerServiceImpl.java
View file @
8e387215
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jcs
.
biz
.
service
.
impl
;
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jcs
.
biz
.
service
.
impl
;
import
java.util.*
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.ControllerDto
;
import
com.yeejoin.amos.boot.module.jcs.api.entity.Controller
Log
;
import
com.yeejoin.amos.boot.module.jcs.api.entity.Controller
;
import
com.yeejoin.amos.boot.module.jcs.api.enums.ControllerTypeEnum
;
import
com.yeejoin.amos.boot.module.jcs.api.enums.ControllerTypeEnum
;
import
com.yeejoin.amos.boot.module.jcs.api.mapper.ControllerMapper
;
import
com.yeejoin.amos.boot.module.jcs.api.service.IControllerService
;
import
com.yeejoin.amos.boot.module.jcs.api.service.IControllerService
;
import
org.
eclipse.paho.client.mqttv3.MqttException
;
import
org.
springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.typroject.tyboot.component.emq.EmqKeeper
;
import
org.typroject.tyboot.core.rdbms.service.BaseService
;
import
org.typroject.tyboot.core.rdbms.service.BaseService
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.ControllerDto
;
import
java.util.*
;
import
com.yeejoin.amos.boot.module.jcs.api.entity.Controller
;
import
java.util.concurrent.ConcurrentHashMap
;
import
com.yeejoin.amos.boot.module.jcs.api.mapper.ControllerMapper
;
/**
/**
* <pre>
* <pre>
...
@@ -26,12 +25,10 @@ import com.yeejoin.amos.boot.module.jcs.api.mapper.ControllerMapper;
...
@@ -26,12 +25,10 @@ import com.yeejoin.amos.boot.module.jcs.api.mapper.ControllerMapper;
*/
*/
@Service
@Service
public
class
ControllerServiceImpl
extends
BaseService
<
ControllerDto
,
Controller
,
ControllerMapper
>
implements
IControllerService
{
public
class
ControllerServiceImpl
extends
BaseService
<
ControllerDto
,
Controller
,
ControllerMapper
>
implements
IControllerService
{
/**
* 将延迟的任务存放在Hashtable中,以便在多个请求中控制任务的取消分享等操作
private
final
ConcurrentHashMap
<
Long
,
TimerTask
>
tasks
=
new
ConcurrentHashMap
<>();
*/
private
final
ConcurrentHashMap
<
Long
,
Long
>
bellStartTime
=
new
ConcurrentHashMap
<>();
private
final
Map
<
Long
,
TimerTask
>
tasks
=
new
Hashtable
<>();
private
final
Timer
timer
=
new
Timer
();
private
final
Timer
timer
=
new
Timer
();
public
static
final
String
CONTROLLER_STATE_CHANGED_TOPIC
=
"controllerStateChanged"
;
@Autowired
@Autowired
ControllerMapper
controllerMapper
;
ControllerMapper
controllerMapper
;
...
@@ -39,12 +36,6 @@ public class ControllerServiceImpl extends BaseService<ControllerDto, Controller
...
@@ -39,12 +36,6 @@ public class ControllerServiceImpl extends BaseService<ControllerDto, Controller
@Autowired
@Autowired
ControllerEquipServiceImpl
controllerEquipServiceImpl
;
ControllerEquipServiceImpl
controllerEquipServiceImpl
;
@Autowired
ControllerLogServiceImpl
controllerLogServiceImpl
;
@Autowired
private
EmqKeeper
emqKeeper
;
public
List
<
ControllerDto
>
queryAllForList
()
{
public
List
<
ControllerDto
>
queryAllForList
()
{
return
this
.
queryForList
(
""
,
false
);
return
this
.
queryForList
(
""
,
false
);
...
@@ -70,68 +61,80 @@ public class ControllerServiceImpl extends BaseService<ControllerDto, Controller
...
@@ -70,68 +61,80 @@ public class ControllerServiceImpl extends BaseService<ControllerDto, Controller
* 1> 首先:消防警铃第一时间 响铃持续15s 后自动关闭。
* 1> 首先:消防警铃第一时间 响铃持续15s 后自动关闭。
* 2> 然后:警铃 响铃结束后,广播系统开启。广播 启动预制的 广播音频, 播放。
* 2> 然后:警铃 响铃结束后,广播系统开启。广播 启动预制的 广播音频, 播放。
*/
*/
public
boolean
changeControllerState
(
Controller
[]
controllers
)
{
public
boolean
changeControllerState
(
ControllerDto
[]
controllers
)
{
boolean
isBatch
=
controllers
.
length
>
1
;
//全部操作
if
(
isBatch
)
{
//全部操作
if
(
controllers
.
length
>
1
)
{
//分组
batchChange
(
controllers
);
HashSet
<
String
>
groupTypes
=
new
HashSet
<>();
}
for
(
Controller
controller
:
controllers
)
{
//单个操作
groupTypes
.
add
(
controller
.
getStation
());
else
if
(
controllers
.
length
==
1
)
{
ControllerDto
controller
=
controllers
[
0
];
//取消该controller的任务
TimerTask
historyTask
=
tasks
.
get
(
controller
.
getSequenceNbr
());
if
(
historyTask
!=
null
)
{
historyTask
.
cancel
();
tasks
.
remove
(
controller
.
getSequenceNbr
());
}
}
//按分组进行归类
String
type
=
controller
.
getType
();
List
<
Map
<
String
,
Controller
>>
groups
=
new
ArrayList
<>();
//关闭操作(只能关闭警铃)
groupTypes
.
forEach
(
groupType
->
{
if
(
"0"
.
equals
(
controller
.
getState
()))
{
Map
<
String
,
Controller
>
group
=
new
HashMap
<>();
if
(
ControllerTypeEnum
.
BELL
.
getCode
().
equals
(
type
))
{
for
(
Controller
controller
:
controllers
)
{
//取消该警铃的任务
if
(
groupType
.
equals
(
controller
.
getStation
()))
group
.
put
(
controller
.
getType
(),
controller
);
TimerTask
stopBellTaskHistory
=
tasks
.
get
(
controller
.
getSequenceNbr
());
if
(
stopBellTaskHistory
!=
null
)
{
stopBellTaskHistory
.
cancel
();
tasks
.
remove
(
controller
.
getSequenceNbr
());
}
controllerEquipServiceImpl
.
changeBell
(
controller
,
"0"
);
//关闭警铃
}
}
groups
.
add
(
group
);
}
});
//启动操作
//开始处理
else
{
startJob
(
groups
);
if
(
ControllerTypeEnum
.
BELL
.
getCode
().
equals
(
type
))
{
}
else
{
//单个操作
bellStartTime
.
put
(
controller
.
getSequenceNbr
(),
System
.
currentTimeMillis
());
for
(
Controller
controller
:
controllers
)
{
controllerEquipServiceImpl
.
changeBell
(
controller
,
"1"
);
//启动警铃
//保存日志
//开始计时15秒,15秒后关闭警铃
saveLog
(
controller
);
TimerTask
timerTask
=
new
TimerTask
()
{
String
type
=
controller
.
getType
();
@Override
// 打开警铃,并开始计时15秒,若15秒内启动广播,则播放完警铃后再播放广播
public
void
run
()
{
if
(
"0"
.
equals
(
controller
.
getState
()))
{
//关闭操作
if
(
ControllerTypeEnum
.
BELL
.
getCode
().
equals
(
type
))
{
//取消该警铃的任务
TimerTask
stopBellTaskHistory
=
tasks
.
get
(
controller
.
getSequenceNbr
());
if
(
stopBellTaskHistory
!=
null
)
{
stopBellTaskHistory
.
cancel
();
tasks
.
remove
(
controller
.
getSequenceNbr
());
}
controllerEquipServiceImpl
.
changeBell
(
controller
,
"0"
);
//关闭警铃
}
else
if
(
ControllerTypeEnum
.
BROADCAST
.
getCode
().
equals
(
type
))
{
//取消该广播的任务
TimerTask
startBroadcastTaskHistory
=
tasks
.
get
(
controller
.
getSequenceNbr
());
if
(
startBroadcastTaskHistory
!=
null
)
{
startBroadcastTaskHistory
.
cancel
();
tasks
.
remove
(
controller
.
getSequenceNbr
());
tasks
.
remove
(
controller
.
getSequenceNbr
());
controllerEquipServiceImpl
.
changeBell
(
controller
,
"0"
);
//关闭警铃
}
}
controllerEquipServiceImpl
.
changeBroadcast
(
controller
,
"0"
);
//关闭广播
};
}
else
if
(
ControllerTypeEnum
.
DOOR
.
getCode
().
equals
(
type
))
{
//车库门不能关闭
tasks
.
put
(
controller
.
getSequenceNbr
(),
timerTask
);
}
timer
.
schedule
(
timerTask
,
15000
);
}
else
{
//启动操作
}
else
if
(
ControllerTypeEnum
.
BROADCAST
.
getCode
().
equals
(
type
))
{
if
(
ControllerTypeEnum
.
BELL
.
getCode
().
equals
(
type
))
{
//启动警铃
//开启广播前检测警铃是否开启,警铃开启的话,等待警铃15s结束后开启广播
controllerEquipServiceImpl
.
changeBell
(
controller
,
"1"
);
//启动警铃
LambdaQueryWrapper
<
Controller
>
lambdaQueryWrapper
=
new
LambdaQueryWrapper
<
Controller
>()
//开始计时15秒,15秒后关闭警铃
.
eq
(
Controller:
:
getStation
,
controller
.
getStation
())
.
eq
(
Controller:
:
getType
,
ControllerTypeEnum
.
BELL
.
getCode
());
Controller
bellController
=
controllerMapper
.
selectOne
(
lambdaQueryWrapper
);
Long
startTime
=
bellStartTime
.
get
(
bellController
.
getSequenceNbr
());
// 警铃开启5秒内开启广播,广播均排队等待15s
if
(
startTime
!=
null
&&
(
System
.
currentTimeMillis
()
-
startTime
)
/
1000
<
3
)
{
TimerTask
timerTask
=
new
TimerTask
()
{
TimerTask
timerTask
=
new
TimerTask
()
{
@Override
@Override
public
void
run
()
{
public
void
run
()
{
tasks
.
remove
(
controller
.
getSequenceNbr
());
tasks
.
remove
(
controller
.
getSequenceNbr
());
controllerEquipServiceImpl
.
changeB
ell
(
controller
,
"0"
);
//关闭警铃
controllerEquipServiceImpl
.
changeB
roadcast
(
controller
,
"1"
);
//开启广播
}
}
};
};
tasks
.
put
(
controller
.
getSequenceNbr
(),
timerTask
);
tasks
.
put
(
controller
.
getSequenceNbr
(),
timerTask
);
timer
.
schedule
(
timerTask
,
15000
);
timer
.
schedule
(
timerTask
,
14000
);
}
else
if
(
ControllerTypeEnum
.
BROADCAST
.
getCode
().
equals
(
type
))
{
//启动广播
}
else
{
//如果警铃启动,则先关闭警铃,后开启广播
TimerTask
timerTask
=
tasks
.
get
(
bellController
.
getSequenceNbr
());
if
(
timerTask
!=
null
)
{
timerTask
.
cancel
();
tasks
.
remove
(
bellController
.
getSequenceNbr
());
ControllerDto
controllerDto
=
new
ControllerDto
();
BeanUtils
.
copyProperties
(
bellController
,
controllerDto
);
controllerEquipServiceImpl
.
changeBell
(
controllerDto
,
"0"
);
//关闭警铃
}
controllerEquipServiceImpl
.
changeBroadcast
(
controller
,
"1"
);
//开启广播
controllerEquipServiceImpl
.
changeBroadcast
(
controller
,
"1"
);
//开启广播
}
else
if
(
ControllerTypeEnum
.
DOOR
.
getCode
().
equals
(
type
))
{
//启动车库门
controllerEquipServiceImpl
.
changeDoor
(
controller
,
"1"
);
//开启车库门
}
}
}
else
if
(
ControllerTypeEnum
.
DOOR
.
getCode
().
equals
(
type
))
{
controllerEquipServiceImpl
.
changeDoor
(
controller
,
"1"
);
//开启车库门
}
}
}
}
}
}
...
@@ -141,82 +144,95 @@ public class ControllerServiceImpl extends BaseService<ControllerDto, Controller
...
@@ -141,82 +144,95 @@ public class ControllerServiceImpl extends BaseService<ControllerDto, Controller
/**
/**
* 全部操作:启动警铃,启动车库门,15秒后关闭警铃,启动广播
* 全部操作:启动警铃,启动车库门,15秒后关闭警铃,启动广播
*/
*/
public
void
startJob
(
List
<
Map
<
String
,
Controller
>>
groups
)
{
public
void
batchChange
(
ControllerDto
[]
controllers
)
{
groups
.
forEach
(
group
->
{
//按大队分组
Controller
bellController
=
group
.
get
(
ControllerTypeEnum
.
BELL
.
getCode
());
Set
<
String
>
groupTypes
=
new
LinkedHashSet
<>();
Controller
broadcastController
=
group
.
get
(
ControllerTypeEnum
.
BROADCAST
.
getCode
());
for
(
ControllerDto
controller
:
controllers
)
{
Controller
doorController
=
group
.
get
(
ControllerTypeEnum
.
DOOR
.
getCode
());
groupTypes
.
add
(
controller
.
getStation
());
//保存操作日志
}
saveLog
(
bellController
);
//按大队进行归类
saveLog
(
broadcastController
);
List
<
Map
<
String
,
ControllerDto
>>
groups
=
new
ArrayList
<>();
saveLog
(
doorController
);
groupTypes
.
forEach
(
groupType
->
{
if
(
"0"
.
equals
(
bellController
.
getState
()))
{
//全部关闭(车库们不能关闭)
Map
<
String
,
ControllerDto
>
group
=
new
HashMap
<>();
//先查看是否有未执行的历史任务,如果有则取消任务
for
(
ControllerDto
controller
:
controllers
)
{
TimerTask
stopBellTaskHistory
=
tasks
.
get
(
bellController
.
getSequenceNbr
());
if
(
groupType
.
equals
(
controller
.
getStation
()))
group
.
put
(
controller
.
getType
(),
controller
);
if
(
stopBellTaskHistory
!=
null
)
{
stopBellTaskHistory
.
cancel
();
tasks
.
remove
(
bellController
.
getSequenceNbr
());
}
if
(
broadcastController
!=
null
)
{
TimerTask
startBroadcastTaskHistory
=
tasks
.
get
(
broadcastController
.
getSequenceNbr
());
if
(
startBroadcastTaskHistory
!=
null
)
{
startBroadcastTaskHistory
.
cancel
();
tasks
.
remove
(
broadcastController
.
getSequenceNbr
());
}
}
controllerEquipServiceImpl
.
changeBell
(
bellController
,
"0"
);
//关闭警铃
controllerEquipServiceImpl
.
changeBroadcast
(
broadcastController
,
"0"
);
//关闭广播
}
else
{
//全部打开
//立即启动警铃,打开车库门
controllerEquipServiceImpl
.
changeBell
(
bellController
,
"1"
);
//开启警铃
controllerEquipServiceImpl
.
changeDoor
(
doorController
,
"1"
);
//开启车库门
//15秒后关闭警铃,启动广播
TimerTask
stopBellTask
=
new
TimerTask
()
{
@Override
public
void
run
()
{
tasks
.
remove
(
bellController
.
getSequenceNbr
());
controllerEquipServiceImpl
.
changeBell
(
bellController
,
"0"
);
//关闭警铃
}
};
TimerTask
startBroadcastTask
=
new
TimerTask
()
{
@Override
public
void
run
()
{
tasks
.
remove
(
broadcastController
.
getSequenceNbr
());
controllerEquipServiceImpl
.
changeBell
(
broadcastController
,
"1"
);
//开启广播
}
};
//先查看是否有未执行的历史任务,如果有则取消任务
TimerTask
stopBellTaskHistory
=
tasks
.
get
(
bellController
.
getSequenceNbr
());
if
(
stopBellTaskHistory
!=
null
)
stopBellTaskHistory
.
cancel
();
TimerTask
startBroadcastTaskHistory
=
tasks
.
get
(
broadcastController
.
getSequenceNbr
());
if
(
startBroadcastTaskHistory
!=
null
)
startBroadcastTaskHistory
.
cancel
();
//保存新的任务至map中,同时开始调度新任务
tasks
.
put
(
bellController
.
getSequenceNbr
(),
stopBellTask
);
tasks
.
put
(
broadcastController
.
getSequenceNbr
(),
startBroadcastTask
);
timer
.
schedule
(
stopBellTask
,
15000
);
timer
.
schedule
(
startBroadcastTask
,
16000
);
}
}
groups
.
add
(
group
);
});
});
// 某大队全部操作
if
(
groups
.
size
()
==
1
)
{
Map
<
String
,
ControllerDto
>
group
=
groups
.
get
(
0
);
ControllerDto
bellController
=
group
.
get
(
ControllerTypeEnum
.
BELL
.
getCode
());
//警铃
ControllerDto
broadcastController
=
group
.
get
(
ControllerTypeEnum
.
BROADCAST
.
getCode
());
//广播
ControllerDto
doorController
=
group
.
get
(
ControllerTypeEnum
.
DOOR
.
getCode
());
//车库门
//取消该大队所有历史任务
TimerTask
bellTask
=
tasks
.
get
(
bellController
.
getSequenceNbr
());
TimerTask
broadcastTask
=
tasks
.
get
(
broadcastController
.
getSequenceNbr
());
if
(
bellTask
!=
null
)
{
bellTask
.
cancel
();
tasks
.
remove
(
bellController
.
getSequenceNbr
());
}
if
(
broadcastTask
!=
null
)
{
broadcastTask
.
cancel
();
tasks
.
remove
(
broadcastController
.
getSequenceNbr
());
}
batchOperation
(
bellController
,
broadcastController
,
doorController
);
}
//所有大队操作
else
{
//取消所有的历史任务
tasks
.
values
().
forEach
(
TimerTask:
:
cancel
);
tasks
.
clear
();
groups
.
forEach
(
group
->
{
ControllerDto
bellController
=
group
.
get
(
ControllerTypeEnum
.
BELL
.
getCode
());
//警铃
ControllerDto
broadcastController
=
group
.
get
(
ControllerTypeEnum
.
BROADCAST
.
getCode
());
//广播
ControllerDto
doorController
=
group
.
get
(
ControllerTypeEnum
.
DOOR
.
getCode
());
//车库门
//关闭所有(广播,车库门不能关闭)
batchOperation
(
bellController
,
broadcastController
,
doorController
);
});
}
}
}
/**
/**
* 保存操作日志
* 批量操作
*
* @param bellController 警铃
* @param broadcastController 广播
* @param doorController 车库门
*/
*/
private
void
saveLog
(
Controller
controller
)
{
private
void
batchOperation
(
ControllerDto
bellController
,
ControllerDto
broadcastController
,
ControllerDto
doorController
)
{
if
(
controller
==
null
)
return
;
//关闭所有(广播,车库门不能关闭)
boolean
update
=
updateById
(
controller
);
if
(
"0"
.
equals
(
bellController
.
getState
()))
{
if
(
update
)
{
controllerEquipServiceImpl
.
changeBell
(
bellController
,
"0"
);
//关闭警铃
ControllerLog
controllerLog
=
new
ControllerLog
();
controllerLog
.
setControllerSeq
(
controller
.
getSequenceNbr
());
controllerLog
.
setState
(
controller
.
getState
());
controllerLog
.
setExecuteDate
(
new
Date
());
controllerLogServiceImpl
.
save
(
controllerLog
);
}
}
// 分发状态变更通知
//开启所有
try
{
else
{
emqKeeper
.
getMqttClient
().
publish
(
CONTROLLER_STATE_CHANGED_TOPIC
,
""
.
getBytes
(),
2
,
true
);
//立即启动警铃,打开车库门
}
catch
(
MqttException
e
)
{
bellStartTime
.
put
(
bellController
.
getSequenceNbr
(),
System
.
currentTimeMillis
());
e
.
printStackTrace
();
controllerEquipServiceImpl
.
changeBell
(
bellController
,
"1"
);
//开启警铃
controllerEquipServiceImpl
.
changeDoor
(
doorController
,
"1"
);
//开启车库门
//15秒后关闭警铃
TimerTask
stopBellTask
=
new
TimerTask
()
{
@Override
public
void
run
()
{
tasks
.
remove
(
bellController
.
getSequenceNbr
());
controllerEquipServiceImpl
.
changeBell
(
bellController
,
"0"
);
//关闭警铃
}
};
//15秒后启动广播
TimerTask
startBroadcastTask
=
new
TimerTask
()
{
@Override
public
void
run
()
{
tasks
.
remove
(
broadcastController
.
getSequenceNbr
());
controllerEquipServiceImpl
.
changeBell
(
broadcastController
,
"1"
);
//开启广播
}
};
//保存新的任务至map中,同时开始调度新任务
tasks
.
put
(
bellController
.
getSequenceNbr
(),
stopBellTask
);
tasks
.
put
(
broadcastController
.
getSequenceNbr
(),
startBroadcastTask
);
timer
.
schedule
(
stopBellTask
,
15000
);
timer
.
schedule
(
startBroadcastTask
,
16000
);
}
}
}
}
}
}
amos-boot-module/amos-boot-module-biz/amos-boot-module-jcs-biz/src/main/java/com/yeejoin/amos/boot/module/jcs/biz/service/impl/PowerTransferServiceImpl.java
View file @
8e387215
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jcs
.
biz
.
service
.
impl
;
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jcs
.
biz
.
service
.
impl
;
import
java.util.*
;
import
java.util.*
;
import
java.util.function.Function
;
import
java.util.function.IntFunction
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.yeejoin.amos.boot.module.common.api.service.IDutyCarService
;
import
com.yeejoin.amos.boot.module.common.api.service.IDutyCarService
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.
AircraftDto
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.
*
;
import
com.yeejoin.amos.boot.module.jcs.api.entity.*
;
import
com.yeejoin.amos.boot.module.jcs.api.entity.*
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
...
@@ -35,17 +38,6 @@ import com.yeejoin.amos.boot.module.common.api.entity.FireTeam;
...
@@ -35,17 +38,6 @@ import com.yeejoin.amos.boot.module.common.api.entity.FireTeam;
import
com.yeejoin.amos.boot.module.common.api.feign.EquipFeignClient
;
import
com.yeejoin.amos.boot.module.common.api.feign.EquipFeignClient
;
import
com.yeejoin.amos.boot.module.common.api.mapper.DynamicFormInstanceMapper
;
import
com.yeejoin.amos.boot.module.common.api.mapper.DynamicFormInstanceMapper
;
import
com.yeejoin.amos.boot.module.common.biz.service.impl.DutyCarServiceImpl
;
import
com.yeejoin.amos.boot.module.common.biz.service.impl.DutyCarServiceImpl
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.AlertCalledObjsDto
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.AlertCalledRo
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.CarStatusInfoDto
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.PowerCarCountDto
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.PowerCompanyCountDto
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferCompanyDto
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferCompanyResourcesDto
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferDto
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferResourceDto
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferSimpleDto
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.ResourceStatisticsDto
;
import
com.yeejoin.amos.boot.module.jcs.api.enums.AlertFeedbackStatusEnum
;
import
com.yeejoin.amos.boot.module.jcs.api.enums.AlertFeedbackStatusEnum
;
import
com.yeejoin.amos.boot.module.jcs.api.enums.DutyInfoEnum
;
import
com.yeejoin.amos.boot.module.jcs.api.enums.DutyInfoEnum
;
import
com.yeejoin.amos.boot.module.jcs.api.enums.FireBrigadeTypeEnum
;
import
com.yeejoin.amos.boot.module.jcs.api.enums.FireBrigadeTypeEnum
;
...
@@ -424,8 +416,9 @@ public class PowerTransferServiceImpl extends BaseService<PowerTransferDto, Powe
...
@@ -424,8 +416,9 @@ public class PowerTransferServiceImpl extends BaseService<PowerTransferDto, Powe
List
<
AlertFormValue
>
alertFormValue
=
alertCalledObjsDto
.
getAlertFormValue
();
List
<
AlertFormValue
>
alertFormValue
=
alertCalledObjsDto
.
getAlertFormValue
();
String
responseLevel
=
""
;
String
responseLevel
=
""
;
List
<
AlertFormValue
>
list1
=
alertFormValue
.
stream
().
filter
(
formValue
->
formValue
.
getFieldCode
().
equals
(
"responseLevel"
)
).
collect
(
Collectors
.
toList
());;
List
<
AlertFormValue
>
list1
=
alertFormValue
.
stream
().
filter
(
formValue
->
formValue
.
getFieldCode
().
equals
(
"responseLevel"
)).
collect
(
Collectors
.
toList
());
if
(
list1
.
size
()
>
0
)
{
;
if
(
list1
.
size
()
>
0
)
{
responseLevel
=
list1
.
get
(
0
).
getFieldValue
();
responseLevel
=
list1
.
get
(
0
).
getFieldValue
();
}
}
...
@@ -483,12 +476,17 @@ public class PowerTransferServiceImpl extends BaseService<PowerTransferDto, Powe
...
@@ -483,12 +476,17 @@ public class PowerTransferServiceImpl extends BaseService<PowerTransferDto, Powe
powerTransferCompanyDto
.
setPowerTransferCompanyResourcesDtoList
(
resourcesDtoList
);
powerTransferCompanyDto
.
setPowerTransferCompanyResourcesDtoList
(
resourcesDtoList
);
// 更新车辆状态
// 更新车辆状态
equipFeignService
.
updateCarStatus
(
carStatusInfoDtoList
);
equipFeignService
.
updateCarStatus
(
carStatusInfoDtoList
);
// 警情力量调派时,点击【任务派发】后,如果被调派的 力量包含消防车,那么该消防车所在的 大队的警铃、广播自动 启动,消防车所在的车库门自动开启
// 警情力量调派时,点击【任务派发】后,如果被调派的 力量包含消防车,那么该消防车所在的 大队的警铃、广播自动 启动,消防车所在的车库门自动开启
try
{
try
{
List
<
Controller
>
controllers
=
controllerServiceImpl
.
list
(
new
LambdaQueryWrapper
<
Controller
>().
eq
(
Controller:
:
getFireTeamSeq
,
powerTransferCompanyDto
.
getCompanyId
()));
List
<
Controller
>
controllers
=
controllerServiceImpl
.
list
(
new
LambdaQueryWrapper
<
Controller
>().
eq
(
Controller:
:
getFireTeamSeq
,
powerTransferCompanyDto
.
getCompanyId
()));
if
(
controllers
.
size
()
>
0
)
{
if
(
controllers
.
size
()
>
0
)
{
controllerServiceImpl
.
changeControllerState
(
controllers
.
toArray
(
new
Controller
[
0
]));
ControllerDto
[]
controllerDtos
=
new
ControllerDto
[
controllers
.
size
()];
for
(
int
i
=
0
;
i
<
controllers
.
size
();
i
++)
{
ControllerDto
controllerDto
=
new
ControllerDto
();
BeanUtils
.
copyProperties
(
controllers
.
get
(
i
),
controllerDto
);
controllerDtos
[
i
]
=
controllerDto
;
}
controllerServiceImpl
.
changeControllerState
(
controllerDtos
);
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
e
.
getMessage
());
log
.
error
(
e
.
getMessage
());
...
...
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