Commit ba76251f authored by maoying's avatar maoying

Merge branch 'developer' of http://172.16.10.76/moa/amos-boot-biz into developer

parents 608886ee 70ed9d94
......@@ -125,15 +125,18 @@ public class MetaHandler implements MetaObjectHandler {
*/
@Override
public void updateFill(MetaObject metaObject) {
String userId = RequestContext.getExeUserId();
ReginParams reginParams =
JSONObject.parseObject(null != redisUtils.get(RedisKey.buildReginKey(userId, getToken())) ?
redisUtils.get(RedisKey.buildReginKey(userId, getToken())).toString() : null, ReginParams.class);
if (ObjectUtils.isEmpty(reginParams)) {
return;
Class clazz = metaObject.getOriginalObject().getClass();
FillCommonUserField annotation = (FillCommonUserField) clazz.getAnnotation(FillCommonUserField.class);
if (annotation == null || annotation.isAutoFill()) {
String userId = RequestContext.getExeUserId();
ReginParams reginParams =
JSONObject.parseObject(null != redisUtils.get(RedisKey.buildReginKey(userId, getToken())) ?
redisUtils.get(RedisKey.buildReginKey(userId, getToken())).toString() : null, ReginParams.class);
if (ObjectUtils.isEmpty(reginParams)) {
return;
}
AgencyUserModel agencyUserModel = reginParams.getUserModel();
recInfoUpdate(metaObject, agencyUserModel);
}
AgencyUserModel agencyUserModel = reginParams.getUserModel();
recInfoUpdate(metaObject, agencyUserModel);
}
}
\ No newline at end of file
......@@ -195,10 +195,9 @@ public interface EquipFeignClient {
@RequestMapping(value = "/monitorView/video/page", method = RequestMethod.GET)
ResponseModel<Page<Map<String, Object>>> queryUncheckedVideoList(
@RequestParam(value = "viewId") Long viewId,
@RequestParam(value = "videoName" ,required =false) String videoName,
@RequestParam(value = "videoCode" ,required =false) String videoCode,
ResponseModel<Page<Map<String, Object>>> queryVideoPage(
@RequestParam(value = "nodeId") Long nodeId,
@RequestParam(value = "nodeType" ,required =false) String nodeType,
@RequestParam(value = "current") int current,
@RequestParam(value = "size") int size
);
......
......@@ -136,7 +136,7 @@
</select>
<select id='getEquipmentForSpecifyDate' resultType='map'>
select * from (
SELECT
MAX(
CASE
......@@ -173,7 +173,7 @@
where cd.group_code =#{groupCode} and cds.instance_id is not null and
cd.is_delete=0
group by cd.instance_id
) result group by ${groupByName}
</select>
<select id='getInstanceIdForSpecifyDateAndEquipment'
......
......@@ -409,7 +409,7 @@ FROM
FROM
cb_org_usr
WHERE
biz_org_name = #{departmentName}
biz_org_name = #{departmentName} and is_delete = 0
)
AND cou.biz_org_type = 'PERSON'
......
......@@ -137,8 +137,8 @@
<if test="map.bizOrgCode != null and map.bizOrgCode != '-1'">
AND u.biz_org_code like concat(#{map.bizOrgCode}, '%')
</if>
<if test="map.amosOrgId != null and map.amosOrgId != '-1'">
AND u.amos_org_id like concat(#{map.amosOrgId}, '%')
<if test="map.amosOrgCode != null and map.amosOrgCode != '-1'">
AND u.amos_org_code like concat('%',#{map.amosOrgCode}, '%')
</if>
GROUP BY
u.sequence_nbr ,
......
......@@ -17,5 +17,5 @@ import java.util.List;
*/
public interface ControllerMapper extends BaseMapper<Controller> {
public List<ControllerDto> getCurrentStationController(@Param("sequenceNbr") Long sequenceNbr);
List<ControllerDto> getCurrentStationController(@Param("sequenceNbr") Long sequenceNbr);
}
......@@ -351,13 +351,13 @@ public class CommandController extends BaseController {
@ApiOperation(value = "分页查询视图下的视频列表")
@RequestMapping(value = "monitorView/video/page", method = RequestMethod.GET)
public ResponseModel<Page<Map<String, Object>>> queryUncheckedVideoList(
@RequestParam(value = "viewId") Long viewId,
@RequestParam(value = "videoName" ,required =false) String videoName,
@RequestParam(value = "videoCode" ,required =false) String videoCode,
@RequestParam(value = "nodeId") Long nodeId,
@RequestParam(value = "nodeType" ,required =false) String nodeType,
@RequestParam(value = "current") int current,
@RequestParam(value = "size") int size) throws Exception
@RequestParam(value = "size") int size
) throws Exception
{
ResponseModel<Page<Map<String, Object>>> data = equipFeignClient.queryUncheckedVideoList(viewId,videoName, videoCode,current,size);
ResponseModel<Page<Map<String, Object>>> data = equipFeignClient.queryVideoPage(nodeId,nodeType,current,size);
Page<Map<String, Object>> pag = data != null ? data.getResult() : null;
List<Map<String, Object>> records = pag != null ? pag.getRecords() : null;
if (records != null && records.size() > 0) {
......
......@@ -50,6 +50,7 @@ import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
......@@ -350,18 +351,6 @@ public class OrgUsrController extends BaseController {
return ResponseHelper.buildResponse(iOrgUsrService.selectCompanyUsers(orgUnitId));
}
/**
* 根据名称模糊匹配
*
* @param name
* @return
*/
@TycloudOperation(needAuth = false, ApiLevel = UserType.AGENCY)
@RequestMapping(value = "/getList", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "根据名称模糊匹配", notes = "根据名称模糊匹配")
public ResponseModel<List<ESOrgUsrDto>> selectById(HttpServletRequest request, String name) throws Exception {
return ResponseHelper.buildResponse(eSOrgUsrService.queryByKeys(name));
}
/**
* 根据名称模糊匹配
......@@ -372,7 +361,7 @@ public class OrgUsrController extends BaseController {
@TycloudOperation(needAuth = false, ApiLevel = UserType.AGENCY)
@RequestMapping(value = "/getdataList/unit", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "根据名称模糊匹配单位", notes = "根据名称模糊匹配单位")
public ResponseModel<List<ESOrgUsrDto>> selectByIddata(HttpServletRequest request, String name) throws Exception {
public ResponseModel<Set<ESOrgUsrDto>> selectByIddata(HttpServletRequest request, String name) throws Exception {
return ResponseHelper.buildResponse(eSOrgUsrService.queryByKeys(name));
}
......
package com.yeejoin.amos.boot.module.common.biz.service.impl;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import javax.annotation.PostConstruct;
import org.elasticsearch.index.query.BoolQueryBuilder;
......@@ -125,7 +127,7 @@ public class ESOrgUsrService {
*
*/
@SuppressWarnings({ "rawtypes" })
public List<ESOrgUsrDto> queryByKeys(String name)
public Set<ESOrgUsrDto> queryByKeys(String name)
{
//创建builder
FuzzyQueryBuilder queryBuilder =null;
......@@ -135,7 +137,7 @@ public class ESOrgUsrService {
queryBuilder =QueryBuilders.fuzzyQuery("bizOrgName", name);
}
Iterable<ESOrgUsrDto> search = esOrgUsrDtoRepository.search(queryBuilder);
List<ESOrgUsrDto> list = new LinkedList<>();
Set<ESOrgUsrDto> list = new LinkedHashSet<>();
search.forEach(esOrgUsrDto->{
list.add(esOrgUsrDto);
});
......
......@@ -404,7 +404,7 @@ public class OrgUsrServiceImpl extends BaseService<OrgUsrDto, OrgUsr, OrgUsrMapp
}
/* BUG2680 查询部门人员错误 传递参数类型不正确 修改为string 2021-09-14 陈召 开始 */
if (req.containsKey("amosOrgId") && !ObjectUtils.isEmpty(req.get("amosOrgId"))) {
map.put("amosOrgId", req.get("amosOrgId"));
map.put("amosOrgCode", req.get("amosOrgId"));//当时给前端给的key名字错了,以为是传Id过来,现在传名字,那就将错就错吧
}
req.remove("bizOrgName");
......
......@@ -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.module.jcs.api.dto.ControllerDto;
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.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 io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
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.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
......@@ -41,7 +36,7 @@ public class ControllerController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "POST", value = "更新联动控制器状态", notes = "更新联动控制器状态")
@PostMapping(value = "/updateControllerState")
public ResponseModel<Object> updateControllerState(@RequestBody Controller[] controllers) {
public ResponseModel<Object> updateControllerState(@RequestBody ControllerDto[] controllers) {
return ResponseHelper.buildResponse(controllerServiceImpl.changeControllerState(controllers));
}
......@@ -66,6 +61,7 @@ public class ControllerController extends BaseController {
BeanUtils.copyProperties(controller, controllerDto);
controllerDto.setTypeEnum(anEnum);
controllerDto.setTypeDescription(anEnum.getName());
controllerDto.setState("0");
controllerDtos.add(controllerDto);
}
});
......
package com.yeejoin.amos.boot.module.jcs.biz.controller;
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.biz.service.impl.ControllerEquipServiceImpl;
import io.swagger.annotations.Api;
......
......@@ -98,19 +98,19 @@ public class VoiceRecordFileController extends BaseController {
page.setSize(pageSize);
String sortParam = "";
String sortRule = "";
// if(sort!=null) { // 排序失效
// String[] date= sort.split(",");
// if(date[1].equals("ascend")) {
// sortParam = RedisKey.humpToLine(date[0]);
// sortRule = "asc";
// }else {
// sortParam =RedisKey.humpToLine(date[0]);
// sortRule = "desc";
// }
// }else {
// sortParam = "tel_start_time";
// sortRule = "desc";
// }
if(sort!=null) { // 排序失效
String[] date= sort.split(",");
if(date[1].equals("ascend")) {
sortParam = RedisKey.humpToLine(date[0]);
sortRule = "asc";
}else {
sortParam =RedisKey.humpToLine(date[0]);
sortRule = "desc";
}
}else {
sortParam = "tel_start_time";
sortRule = "desc";
}
Page<VoiceRecordFileDto> pageBean = voiceRecordFileService.queryRecordListByQueryDto(page,
model.getTelStartTimeStr(),model.getTelEndTimeStr(),model.getFileType(),model.getCaller(),
model.getCalled(),sortParam,sortRule);
......
......@@ -10,6 +10,9 @@ import java.util.function.Function;
import java.util.stream.Collectors;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.yeejoin.amos.boot.module.common.api.dto.ESOrgUsrDto;
import com.yeejoin.amos.boot.module.common.api.entity.OrgUsr;
import com.yeejoin.amos.boot.module.common.biz.service.impl.ESOrgUsrService;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
......@@ -121,6 +124,9 @@ public class AlertCalledServiceImpl extends BaseService<AlertCalledDto, AlertCal
@Autowired
private EmqKeeper emqKeeper;
@Autowired
ESOrgUsrService eSOrgUsrService;
@Value("${mqtt.topic.command.alert.notice}")
private String topic;
......@@ -424,6 +430,17 @@ public class AlertCalledServiceImpl extends BaseService<AlertCalledDto, AlertCal
* 同步保存ES
*/
eSAlertCalledService.saveAlertCalledToES(alertCalled);
// 事发单位保存进ES
if(!ValidationUtil.isEmpty(alertCalled.getUnitInvolved())) {
OrgUsr orgUsr = new OrgUsr();
orgUsr.setSequenceNbr(-1L);
orgUsr.setBizOrgName(alertCalled.getUnitInvolved());
eSOrgUsrService.saveAlertCalledToES(orgUsr);
}
}
// toSendCompletePoliceSituationMatch(alertCalled.getSequenceNbr());
return alertCalledObjsDto;
......@@ -599,7 +616,11 @@ public class AlertCalledServiceImpl extends BaseService<AlertCalledDto, AlertCal
/*
* if(null == valueCode) { valueCode = alertFormValue.getFieldValue(); }
*/
listdate.add(new KeyValueLabel(alertFormValue.getFieldName(), alertFormValue.getFieldCode(), valueCode));
if("flightNumber".equals(alertFormValue.getFieldCode()) || "aircraftModel".equals(alertFormValue.getFieldCode())) {
listdate.add(new KeyValueLabel(alertFormValue.getFieldName(), alertFormValue.getFieldCode(), alertFormValue.getFieldValueCode()));
} else {
listdate.add(new KeyValueLabel(alertFormValue.getFieldName(), alertFormValue.getFieldCode(), valueCode));
}
});
map.put("data", listdate);
......
package com.yeejoin.amos.boot.module.jcs.biz.service.impl;
import java.util.List;
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.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.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 org.eclipse.paho.client.mqttv3.MqttException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.component.emq.EmqKeeper;
import org.typroject.tyboot.core.rdbms.service.BaseService;
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.mapper.ControllerEquipMapper;
import java.util.Date;
import java.util.List;
/**
* <pre>
......@@ -26,10 +32,17 @@ import com.yeejoin.amos.boot.module.jcs.api.mapper.ControllerEquipMapper;
*/
@Service
public class ControllerEquipServiceImpl extends BaseService<ControllerEquipDto, ControllerEquip, ControllerEquipMapper> implements IControllerEquipService {
public static final String CONTROLLER_STATE_CHANGED_TOPIC = "controllerStateChanged";
@Autowired
JcsControlServerClient jcsControlServerClient;
@Autowired
ControllerLogServiceImpl controllerLogServiceImpl;
@Autowired
private EmqKeeper emqKeeper;
public List<ControllerEquipDto> queryAllForList() {
return this.queryForList("", false);
}
......@@ -38,8 +51,10 @@ public class ControllerEquipServiceImpl extends BaseService<ControllerEquipDto,
* 改变警铃状态 0关闭,1开启
*/
@Async
public void changeBell(Controller controller, String type) {
public void changeBell(ControllerDto controller, String type) {
if (controller == null) return;
controller.setState(type);
saveLog(controller);
List<ControllerEquip> list = getControllerEquips(controller);
list.forEach(controllerEquip -> jcsControlServerClient.sendBellAction(controllerEquip.getNum(), type));
}
......@@ -48,8 +63,10 @@ public class ControllerEquipServiceImpl extends BaseService<ControllerEquipDto,
* 改变广播状态 0关闭,1开启
*/
@Async
public void changeBroadcast(Controller controller, String type) {
public void changeBroadcast(ControllerDto controller, String type) {
if (controller == null) return;
controller.setState(type);
saveLog(controller);
List<ControllerEquip> list = getControllerEquips(controller);
list.forEach(controllerEquip -> jcsControlServerClient.sendFileAction(controllerEquip.getNum(), ""));
}
......@@ -58,14 +75,35 @@ public class ControllerEquipServiceImpl extends BaseService<ControllerEquipDto,
* 改变车库门状态 0关闭,1开启
*/
@Async
public void changeDoor(Controller controller, String type) {
public void changeDoor(ControllerDto controller, String type) {
if (controller == null) return;
controller.setState(type);
saveLog(controller);
List<ControllerEquip> list = getControllerEquips(controller);
list.forEach(controllerEquip -> jcsControlServerClient.writeStateAction(controller.getIp(), controller.getPort(), Integer.parseInt(controllerEquip.getNum()), type));
}
private List<ControllerEquip> getControllerEquips(Controller controller) {
private List<ControllerEquip> getControllerEquips(ControllerDto controller) {
LambdaQueryWrapper<ControllerEquip> wrapper = new LambdaQueryWrapper<ControllerEquip>().eq(ControllerEquip::getControllerSeq, controller.getSequenceNbr());
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();
}
}
}
package com.yeejoin.amos.boot.module.jcs.biz.service.impl;
import java.util.*;
import com.yeejoin.amos.boot.module.jcs.api.entity.ControllerLog;
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;
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 org.eclipse.paho.client.mqttv3.MqttException;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.component.emq.EmqKeeper;
import org.typroject.tyboot.core.rdbms.service.BaseService;
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.mapper.ControllerMapper;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
/**
* <pre>
......@@ -26,12 +25,10 @@ import com.yeejoin.amos.boot.module.jcs.api.mapper.ControllerMapper;
*/
@Service
public class ControllerServiceImpl extends BaseService<ControllerDto, Controller, ControllerMapper> implements IControllerService {
/**
* 将延迟的任务存放在Hashtable中,以便在多个请求中控制任务的取消分享等操作
*/
private final Map<Long, TimerTask> tasks = new Hashtable<>();
private final ConcurrentHashMap<Long, TimerTask> tasks = new ConcurrentHashMap<>();
private final ConcurrentHashMap<Long, Long> bellStartTime = new ConcurrentHashMap<>();
private final Timer timer = new Timer();
public static final String CONTROLLER_STATE_CHANGED_TOPIC = "controllerStateChanged";
@Autowired
ControllerMapper controllerMapper;
......@@ -39,12 +36,6 @@ public class ControllerServiceImpl extends BaseService<ControllerDto, Controller
@Autowired
ControllerEquipServiceImpl controllerEquipServiceImpl;
@Autowired
ControllerLogServiceImpl controllerLogServiceImpl;
@Autowired
private EmqKeeper emqKeeper;
public List<ControllerDto> queryAllForList() {
return this.queryForList("", false);
......@@ -70,68 +61,80 @@ public class ControllerServiceImpl extends BaseService<ControllerDto, Controller
* 1> 首先:消防警铃第一时间 响铃持续15s 后自动关闭。
* 2> 然后:警铃 响铃结束后,广播系统开启。广播 启动预制的 广播音频, 播放。
*/
public boolean changeControllerState(Controller[] controllers) {
boolean isBatch = controllers.length > 1;
if (isBatch) {//全部操作
//分组
HashSet<String> groupTypes = new HashSet<>();
for (Controller controller : controllers) {
groupTypes.add(controller.getStation());
public boolean changeControllerState(ControllerDto[] controllers) {
//全部操作
if (controllers.length > 1) {
batchChange(controllers);
}
//单个操作
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());
}
//按分组进行归类
List<Map<String, Controller>> groups = new ArrayList<>();
groupTypes.forEach(groupType -> {
Map<String, Controller> group = new HashMap<>();
for (Controller controller : controllers) {
if (groupType.equals(controller.getStation())) group.put(controller.getType(), controller);
String type = controller.getType();
//关闭操作(只能关闭警铃)
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");//关闭警铃
}
groups.add(group);
});
//开始处理
startJob(groups);
} else {//单个操作
for (Controller controller : controllers) {
//保存日志
saveLog(controller);
String type = controller.getType();
// 打开警铃,并开始计时15秒,若15秒内启动广播,则播放完警铃后再播放广播
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();
}
//启动操作
else {
if (ControllerTypeEnum.BELL.getCode().equals(type)) {
bellStartTime.put(controller.getSequenceNbr(), System.currentTimeMillis());
controllerEquipServiceImpl.changeBell(controller, "1");//启动警铃
//开始计时15秒,15秒后关闭警铃
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
tasks.remove(controller.getSequenceNbr());
controllerEquipServiceImpl.changeBell(controller, "0");//关闭警铃
}
controllerEquipServiceImpl.changeBroadcast(controller, "0");//关闭广播
} else if (ControllerTypeEnum.DOOR.getCode().equals(type)) {//车库门不能关闭
}
} else {//启动操作
if (ControllerTypeEnum.BELL.getCode().equals(type)) {//启动警铃
controllerEquipServiceImpl.changeBell(controller, "1");//启动警铃
//开始计时15秒,15秒后关闭警铃
};
tasks.put(controller.getSequenceNbr(), timerTask);
timer.schedule(timerTask, 15000);
} else if (ControllerTypeEnum.BROADCAST.getCode().equals(type)) {
//开启广播前检测警铃是否开启,警铃开启的话,等待警铃15s结束后开启广播
LambdaQueryWrapper<Controller> lambdaQueryWrapper = new LambdaQueryWrapper<Controller>()
.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() {
@Override
public void run() {
tasks.remove(controller.getSequenceNbr());
controllerEquipServiceImpl.changeBell(controller, "0");//关闭警铃
controllerEquipServiceImpl.changeBroadcast(controller, "1");//开启广播
}
};
tasks.put(controller.getSequenceNbr(), timerTask);
timer.schedule(timerTask, 15000);
} else if (ControllerTypeEnum.BROADCAST.getCode().equals(type)) {//启动广播
timer.schedule(timerTask, 14000);
} 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");//开启广播
} 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
/**
* 全部操作:启动警铃,启动车库门,15秒后关闭警铃,启动广播
*/
public void startJob(List<Map<String, Controller>> groups) {
groups.forEach(group -> {
Controller bellController = group.get(ControllerTypeEnum.BELL.getCode());
Controller broadcastController = group.get(ControllerTypeEnum.BROADCAST.getCode());
Controller doorController = group.get(ControllerTypeEnum.DOOR.getCode());
//保存操作日志
saveLog(bellController);
saveLog(broadcastController);
saveLog(doorController);
if ("0".equals(bellController.getState())) {//全部关闭(车库们不能关闭)
//先查看是否有未执行的历史任务,如果有则取消任务
TimerTask stopBellTaskHistory = tasks.get(bellController.getSequenceNbr());
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);
public void batchChange(ControllerDto[] controllers) {
//按大队分组
Set<String> groupTypes = new LinkedHashSet<>();
for (ControllerDto controller : controllers) {
groupTypes.add(controller.getStation());
}
//按大队进行归类
List<Map<String, ControllerDto>> groups = new ArrayList<>();
groupTypes.forEach(groupType -> {
Map<String, ControllerDto> group = new HashMap<>();
for (ControllerDto controller : controllers) {
if (groupType.equals(controller.getStation())) group.put(controller.getType(), controller);
}
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) {
if (controller == null) return;
boolean update = updateById(controller);
if (update) {
ControllerLog controllerLog = new ControllerLog();
controllerLog.setControllerSeq(controller.getSequenceNbr());
controllerLog.setState(controller.getState());
controllerLog.setExecuteDate(new Date());
controllerLogServiceImpl.save(controllerLog);
private void batchOperation(ControllerDto bellController, ControllerDto broadcastController, ControllerDto doorController) {
//关闭所有(广播,车库门不能关闭)
if ("0".equals(bellController.getState())) {
controllerEquipServiceImpl.changeBell(bellController, "0");//关闭警铃
}
// 分发状态变更通知
try {
emqKeeper.getMqttClient().publish(CONTROLLER_STATE_CHANGED_TOPIC, "".getBytes(), 2, true);
} catch (MqttException e) {
e.printStackTrace();
//开启所有
else {
//立即启动警铃,打开车库门
bellStartTime.put(bellController.getSequenceNbr(), System.currentTimeMillis());
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);
}
}
}
package com.yeejoin.amos.boot.module.jcs.biz.service.impl;
import java.util.*;
import java.util.function.Function;
import java.util.function.IntFunction;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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 org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -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.mapper.DynamicFormInstanceMapper;
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.DutyInfoEnum;
import com.yeejoin.amos.boot.module.jcs.api.enums.FireBrigadeTypeEnum;
......@@ -424,8 +416,9 @@ public class PowerTransferServiceImpl extends BaseService<PowerTransferDto, Powe
List<AlertFormValue> alertFormValue = alertCalledObjsDto.getAlertFormValue();
String responseLevel = "";
List<AlertFormValue> list1 = alertFormValue.stream().filter(formValue -> formValue.getFieldCode().equals("responseLevel") ).collect(Collectors.toList());;
if(list1.size() > 0) {
List<AlertFormValue> list1 = alertFormValue.stream().filter(formValue -> formValue.getFieldCode().equals("responseLevel")).collect(Collectors.toList());
;
if (list1.size() > 0) {
responseLevel = list1.get(0).getFieldValue();
}
......@@ -483,12 +476,17 @@ public class PowerTransferServiceImpl extends BaseService<PowerTransferDto, Powe
powerTransferCompanyDto.setPowerTransferCompanyResourcesDtoList(resourcesDtoList);
// 更新车辆状态
equipFeignService.updateCarStatus(carStatusInfoDtoList);
// 警情力量调派时,点击【任务派发】后,如果被调派的 力量包含消防车,那么该消防车所在的 大队的警铃、广播自动 启动,消防车所在的车库门自动开启
try {
List<Controller> controllers = controllerServiceImpl.list(new LambdaQueryWrapper<Controller>().eq(Controller::getFireTeamSeq, powerTransferCompanyDto.getCompanyId()));
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) {
log.error(e.getMessage());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment