Commit 9926ec57 authored by maoying's avatar maoying

Merge branch 'dev_upgrade_plan6' of…

Merge branch 'dev_upgrade_plan6' of http://39.98.45.134:8090/station/YeeAmosFireAutoSysRoot into dev_upgrade_plan6
parents c23e993b ba7d1663
...@@ -103,6 +103,9 @@ public class ContingencyAction implements CustomerAction { ...@@ -103,6 +103,9 @@ public class ContingencyAction implements CustomerAction {
@Autowired @Autowired
IRocketMQService rocketMQService; IRocketMQService rocketMQService;
@Autowired
private IContingencyInstance contingencyInstance;
@Value("${rocket-plan-topic}") @Value("${rocket-plan-topic}")
private String rocketTopic; private String rocketTopic;
...@@ -510,7 +513,6 @@ public class ContingencyAction implements CustomerAction { ...@@ -510,7 +513,6 @@ public class ContingencyAction implements CustomerAction {
result.add(tempmap1); result.add(tempmap1);
this.sendcmd("optionarea", paramObj, result); this.sendcmd("optionarea", paramObj, result);
} }
...@@ -703,7 +705,6 @@ public class ContingencyAction implements CustomerAction { ...@@ -703,7 +705,6 @@ public class ContingencyAction implements CustomerAction {
result.add(tempmap1); result.add(tempmap1);
this.sendcmd("message", paramObj, result); this.sendcmd("message", paramObj, result);
redisTemplate.opsForValue().set("contingencyRo", contingencyRo); redisTemplate.opsForValue().set("contingencyRo", contingencyRo);
} }
...@@ -851,6 +852,7 @@ public class ContingencyAction implements CustomerAction { ...@@ -851,6 +852,7 @@ public class ContingencyAction implements CustomerAction {
@RuleMethod(methodLabel = "自动执行动作", project = "换流站消防专项预案") @RuleMethod(methodLabel = "自动执行动作", project = "换流站消防专项预案")
public void autoExecuteAction( public void autoExecuteAction(
@MethodParam(paramLabel = "当前步骤") String currentSetup,
@MethodParam(paramLabel = "按钮状态") String buttonStatus, @MethodParam(paramLabel = "按钮状态") String buttonStatus,
@MethodParam(paramLabel = "按钮编码") String buttonCode, @MethodParam(paramLabel = "按钮编码") String buttonCode,
@MethodParam(paramLabel = "规则主题") String topic, @MethodParam(paramLabel = "规则主题") String topic,
...@@ -858,6 +860,8 @@ public class ContingencyAction implements CustomerAction { ...@@ -858,6 +860,8 @@ public class ContingencyAction implements CustomerAction {
ContingencyRo contingencyRo = (ContingencyRo) paramObj; ContingencyRo contingencyRo = (ContingencyRo) paramObj;
contingencyRo.setButtonState(buttonStatus); contingencyRo.setButtonState(buttonStatus);
contingencyRo.setButtonCode(buttonCode); contingencyRo.setButtonCode(buttonCode);
contingencyRo.setStepState(topic);
contingencyRo.setStep(currentSetup);
try { try {
//电力设备 //电力设备
Equipment equipment = equipmentService.queryOne(Long.parseLong(contingencyRo.getEquipmentId())); Equipment equipment = equipmentService.queryOne(Long.parseLong(contingencyRo.getEquipmentId()));
...@@ -867,6 +871,26 @@ public class ContingencyAction implements CustomerAction { ...@@ -867,6 +871,26 @@ public class ContingencyAction implements CustomerAction {
} }
} }
@RuleMethod(methodLabel = "自动执行动作V2", project = "换流站消防专项预案")
public void autoExecuteActionV2(
@MethodParam(paramLabel = "步骤编码") String stepCode,
@MethodParam(paramLabel = "按钮编码") String buttonCode,
@MethodParam(paramLabel = "按钮状态") String confirm,
@MethodParam(paramLabel = "步骤状态") String stepState,
@MethodParam(paramLabel = "动作名称") String actionName,
@MethodParam(paramLabel = "图标") String icon,
@MethodParam(paramLabel = "提示信息") String tips,
@MethodParam(paramLabel = "按钮json字符串") String buttonJson,
@MethodParam(paramLabel = "预案对象") Object paramObj) {
ContingencyRo contingencyRo = (ContingencyRo) paramObj;
String contingencyPlanId = getContingencyPlanId(contingencyRo.getBatchNo(), actionName, icon, tips, buttonJson);
try {
contingencyInstance.fire(contingencyRo.getBatchNo(), stepCode, contingencyPlanId, buttonCode, confirm, stepState, null, null);
} catch (Exception e) {
e.printStackTrace();
}
}
public void sendcmd(String msgType, DeviceRo deviceRo, SafteyPlanResult result) { public void sendcmd(String msgType, DeviceRo deviceRo, SafteyPlanResult result) {
Constructor<?> constructor; Constructor<?> constructor;
try { try {
......
...@@ -19,7 +19,7 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -19,7 +19,7 @@ import org.springframework.web.bind.annotation.RestController;
*/ */
@RestController @RestController
@RequestMapping(value = "/api/equipFireEquip") @RequestMapping(value = "/api/equipFireEquip")
public class equipmentFireEquipmentController { public class EquipmentFireEquipmentController {
@Autowired @Autowired
private IEquipmentFireEquipmentService equipmentFireEquipmentService; private IEquipmentFireEquipmentService equipmentFireEquipmentService;
......
package com.yeejoin.amos.fas.business.controller; package com.yeejoin.amos.fas.business.controller;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import com.yeejoin.amos.fas.business.action.CustomerAction; import com.yeejoin.amos.fas.business.action.CustomerAction;
import com.yeejoin.amos.fas.business.bo.FirePlanAlarmBo;
import com.yeejoin.amos.fas.business.dao.mapper.View3dMapper;
import com.yeejoin.amos.fas.business.service.impl.RiskSourceServiceImpl; import com.yeejoin.amos.fas.business.service.impl.RiskSourceServiceImpl;
import com.yeejoin.amos.fas.business.service.intfc.IContingencyInstance; import com.yeejoin.amos.fas.business.service.intfc.IContingencyInstance;
import com.yeejoin.amos.fas.business.service.intfc.IContingencyOriginalDataService; import com.yeejoin.amos.fas.business.service.intfc.IContingencyOriginalDataService;
import com.yeejoin.amos.fas.business.service.intfc.IEquipmentService; import com.yeejoin.amos.fas.business.service.intfc.IEquipmentService;
import com.yeejoin.amos.fas.business.service.intfc.IRocketMQService;
import com.yeejoin.amos.fas.business.service.intfc.IRuleRunningSnapshotService; import com.yeejoin.amos.fas.business.service.intfc.IRuleRunningSnapshotService;
import com.yeejoin.amos.fas.config.Permission; import com.yeejoin.amos.fas.config.Permission;
import com.yeejoin.amos.fas.core.common.request.CommonPageable; import com.yeejoin.amos.fas.core.common.request.CommonPageable;
...@@ -41,22 +15,33 @@ import com.yeejoin.amos.fas.core.util.CommonResponse; ...@@ -41,22 +15,33 @@ import com.yeejoin.amos.fas.core.util.CommonResponse;
import com.yeejoin.amos.fas.core.util.CommonResponseUtil; import com.yeejoin.amos.fas.core.util.CommonResponseUtil;
import com.yeejoin.amos.fas.core.util.DateUtil; import com.yeejoin.amos.fas.core.util.DateUtil;
import com.yeejoin.amos.fas.dao.entity.Equipment; import com.yeejoin.amos.fas.dao.entity.Equipment;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@RestController @RestController
@RequestMapping(value = "/api/timeline") @RequestMapping(value = "/api/timeline")
@Api(tags="时间轴") @Api(tags = "时间轴")
public class TimeLineController extends BaseController{ public class TimeLineController extends BaseController {
private static final Logger log = LoggerFactory.getLogger(TimeLineController.class); private static final Logger log = LoggerFactory.getLogger(TimeLineController.class);
@Autowired @Autowired
IContingencyInstance iContingencyInstance; IContingencyInstance iContingencyInstance;
@Qualifier("contingencyAction") @Qualifier("contingencyAction")
@Autowired @Autowired
private CustomerAction customerAction; private CustomerAction customerAction;
@Autowired @Autowired
IContingencyOriginalDataService iContingencyOriginalDataService; IContingencyOriginalDataService iContingencyOriginalDataService;
...@@ -66,78 +51,46 @@ public class TimeLineController extends BaseController{ ...@@ -66,78 +51,46 @@ public class TimeLineController extends BaseController{
@Autowired @Autowired
IEquipmentService equipmentService; IEquipmentService equipmentService;
static LinkedList<Map<String,String >> fireQueue = new LinkedList<>();
@Autowired
private RedisTemplate redisTemplate;
@Autowired
private IRuleRunningSnapshotService ruleRunningSnapshotService;
@Autowired
IRocketMQService rocketMQService;
@Value("${rocket-equip-alarm-topic}")
private String rocketTopicFireEquipAlarm;
@Autowired @Autowired
private View3dMapper view3dMapper; private RedisTemplate redisTemplate;
@Autowired
private IRuleRunningSnapshotService ruleRunningSnapshotService;
@Permission @Permission
//@Authorization(ingore = true) //@Authorization(ingore = true)
@ApiOperation(httpMethod = "GET",value = "根据批次号查询时间轴", notes = "根据批次号查询时间轴") @ApiOperation(httpMethod = "GET", value = "根据批次号查询时间轴", notes = "根据批次号查询时间轴")
@RequestMapping(value = "/{instanceNo}", produces = "application/json;charset=UTF-8", method = RequestMethod.GET) @RequestMapping(value = "/{instanceNo}", produces = "application/json;charset=UTF-8", method = RequestMethod.GET)
public CommonResponse queryPoint(@PathVariable String instanceNo,@RequestParam("recordType") String recordType) throws Exception{ public CommonResponse queryPoint(@PathVariable String instanceNo, @RequestParam("recordType") String recordType) throws Exception {
return CommonResponseUtil.success(iContingencyInstance.queryForTimeLine(instanceNo,recordType)); return CommonResponseUtil.success(iContingencyInstance.queryForTimeLine(instanceNo, recordType));
} }
@Permission @Permission
//@Authorization(ingore = true) //@Authorization(ingore = true)
@ApiOperation(httpMethod = "PUT",value = "点击按钮", notes = "点击按钮") @ApiOperation(httpMethod = "PUT", value = "点击按钮", notes = "点击按钮")
@RequestMapping(value = "/fire", produces = "application/json;charset=UTF-8", method = RequestMethod.PUT) @RequestMapping(value = "/fire", produces = "application/json;charset=UTF-8", method = RequestMethod.PUT)
public CommonResponse fire(@RequestParam("batchNo") String batchNo, public CommonResponse fire(@RequestParam("batchNo") String batchNo,
@RequestParam("stepCode") String stepCode, @RequestParam("stepCode") String stepCode,
@RequestParam("buttonCode") String buttonCode, @RequestParam("buttonCode") String buttonCode,
@RequestParam("confirm") String confirm, @RequestParam("confirm") String confirm,
@RequestParam("contingencyPlanId") String contingencyPlanId, @RequestParam("contingencyPlanId") String contingencyPlanId,
@RequestParam("stepState") String stepState) throws Exception{ @RequestParam("stepState") String stepState) throws Exception {
iContingencyInstance.fire(batchNo, stepCode, contingencyPlanId, buttonCode, confirm, stepState, getToken(), getProduct());
Map<String,String> map = new HashMap<>();
map.put("batchNo",batchNo);
map.put("stepCode",stepCode);
map.put("buttonCode",buttonCode);
map.put("confirm",confirm);
map.put("contingencyPlanId",contingencyPlanId);
map.put("stepState",stepState);
map.put("token",getToken());
map.put("product",getProduct());
fireQueue.addLast(map);
//应急指挥给总部推送消息
sendPlanAlarm(batchNo,buttonCode);
return CommonResponseUtil.success("SUCCESS"); return CommonResponseUtil.success("SUCCESS");
} }
private void sendPlanAlarm(String batchNo ,String buttonCode){
//确警后推送报警数据
if("FIRE_CONFIRM".equals(buttonCode)){
FirePlanAlarmBo firePlanAlarm = view3dMapper.getPlanAlarmInfo(batchNo);
List<FirePlanAlarmBo> list = new ArrayList<FirePlanAlarmBo>();
list.add(firePlanAlarm);
rocketMQService.sendMsg(rocketTopicFireEquipAlarm,"plan_alarm", list);
}
}
@Permission @Permission
@ApiOperation(httpMethod = "PUT",value = "点击按钮", notes = "点击按钮") @ApiOperation(httpMethod = "PUT", value = "点击按钮", notes = "点击按钮")
@RequestMapping(value = "/fire/exit", produces = "application/json;charset=UTF-8", method = RequestMethod.PUT) @RequestMapping(value = "/fire/exit", produces = "application/json;charset=UTF-8", method = RequestMethod.PUT)
public CommonResponse fireExit(@RequestParam("batchNo") String batchNo, public CommonResponse fireExit(@RequestParam("batchNo") String batchNo,
@RequestParam("stepCode") String stepCode, @RequestParam("stepCode") String stepCode,
@RequestParam("buttonCode") String buttonCode, @RequestParam("buttonCode") String buttonCode,
@RequestParam("confirm") String confirm, @RequestParam("confirm") String confirm,
@RequestParam("stepState") String stepState) throws Exception{ @RequestParam("stepState") String stepState) throws Exception {
Map<String,String> map = new HashMap<>(); Map<String, String> map = new HashMap<>();
redisTemplate.delete(RiskSourceServiceImpl.cacheKeyForCanBeRunning()); redisTemplate.delete(RiskSourceServiceImpl.cacheKeyForCanBeRunning());
Optional<Equipment> equipment = iContingencyInstance.fire(batchNo,stepCode,"",buttonCode,confirm,stepState); Optional<Equipment> equipment = iContingencyInstance.fire(batchNo, stepCode, "", buttonCode, confirm, stepState);
// 结束预案,更新设备重点设备参数 // 结束预案,更新设备重点设备参数
equipment.ifPresent(equip -> { equipment.ifPresent(equip -> {
equip.setStartTime(DateUtil.getDateNow()); equip.setStartTime(DateUtil.getDateNow());
...@@ -151,62 +104,26 @@ public class TimeLineController extends BaseController{ ...@@ -151,62 +104,26 @@ public class TimeLineController extends BaseController{
} }
@Permission @Permission
@ApiOperation(httpMethod = "GET",value = "预案回放", notes = "预案回放") @ApiOperation(httpMethod = "GET", value = "预案回放", notes = "预案回放")
@RequestMapping(value = "/fire/replay", produces = "application/json;charset=UTF-8", method = RequestMethod.GET) @RequestMapping(value = "/fire/replay", produces = "application/json;charset=UTF-8", method = RequestMethod.GET)
public CommonResponse replay(@RequestParam("batchNo") String batchNo, public CommonResponse replay(@RequestParam("batchNo") String batchNo,
@RequestParam("randomNumber") String randomNumber) throws Exception{ @RequestParam("randomNumber") String randomNumber) throws Exception {
ruleRunningSnapshotService.replayPlan(batchNo, randomNumber); ruleRunningSnapshotService.replayPlan(batchNo, randomNumber);
return CommonResponseUtil.success("SUCCESS"); return CommonResponseUtil.success("SUCCESS");
} }
@Permission @Permission
@ApiOperation(httpMethod = "GET",value = "预案回放退出", notes = "预案回放退出") @ApiOperation(httpMethod = "GET", value = "预案回放退出", notes = "预案回放退出")
@RequestMapping(value = "/fire/replay/exit", produces = "application/json;charset=UTF-8", method = RequestMethod.GET) @RequestMapping(value = "/fire/replay/exit", produces = "application/json;charset=UTF-8", method = RequestMethod.GET)
public CommonResponse replayExit(@RequestParam("batchNo") String batchNo, public CommonResponse replayExit(@RequestParam("batchNo") String batchNo,
@RequestParam("randomNumber") String randomNumber) throws Exception{ @RequestParam("randomNumber") String randomNumber) throws Exception {
ruleRunningSnapshotService.exitReplayPlan(batchNo, randomNumber); ruleRunningSnapshotService.exitReplayPlan(batchNo, randomNumber);
return CommonResponseUtil.success("SUCCESS"); return CommonResponseUtil.success("SUCCESS");
} }
@Scheduled(cron = "*/2 * * * * ?")
public void runFireQueue() throws Exception
{
if(fireQueue.size() == 0)
return;
Map<String,String> map = fireQueue.getFirst();
String batchNo = map.get("batchNo");
String stepCode = map.get("stepCode");
String buttonCode = map.get("buttonCode");
String confirm = map.get("confirm");
String contingencyPlanId = map.get("contingencyPlanId");
String stepState = map.get("stepState");
String token = map.get("token");
String product = map.get("product");
try
{
log.info("fireQueue-size:"+fireQueue.size());
log.info("stepCode:" + map.get("stepCode"));
log.info("buttonCode:" + map.get("buttonCode"));
log.info("confirm:" + map.get("confirm"));
log.info("stepState:" + map.get("stepState"));
RequestContext.setToken(token);
RequestContext.setProduct(product);
iContingencyInstance.setButtonExecuted(batchNo,contingencyPlanId,buttonCode,confirm);
iContingencyInstance.fire(batchNo,stepCode,contingencyPlanId,buttonCode,confirm,stepState);
}catch (Exception e)
{
throw e;
}finally {
fireQueue.removeFirst();
}
}
@Permission @Permission
// @Authorization(ingore = true) // @Authorization(ingore = true)
@ApiOperation(httpMethod = "POST",value = "查询预案记录", notes = "查询预案记录") @ApiOperation(httpMethod = "POST", value = "查询预案记录", notes = "查询预案记录")
@RequestMapping(value = "/contingency/page", produces = "application/json;charset=UTF-8", method = RequestMethod.POST) @RequestMapping(value = "/contingency/page", produces = "application/json;charset=UTF-8", method = RequestMethod.POST)
public CommonResponse contingencyRecord( public CommonResponse contingencyRecord(
@ApiParam(value = "查询条件", required = false) @RequestBody(required = false) List<CommonRequest> queryRequests, @ApiParam(value = "查询条件", required = false) @RequestBody(required = false) List<CommonRequest> queryRequests,
...@@ -214,29 +131,24 @@ public class TimeLineController extends BaseController{ ...@@ -214,29 +131,24 @@ public class TimeLineController extends BaseController{
) { ) {
//CommonPageable commonPageable = new CommonPageable(pageNumber,pageSize); //CommonPageable commonPageable = new CommonPageable(pageNumber,pageSize);
String contingencyName = null; String contingencyName = null;
String equipmentId = null; String equipmentId = null;
String createTime = null; String createTime = null;
if(!CollectionUtils.isEmpty(queryRequests)) if (!CollectionUtils.isEmpty(queryRequests)) {
{ for (CommonRequest request : queryRequests) {
for(CommonRequest request:queryRequests) if ("contingencyName".equals(request.getName())) {
{
if("contingencyName".equals(request.getName()))
{
contingencyName = String.valueOf(request.getValue()); contingencyName = String.valueOf(request.getValue());
} }
if("equipmentId".equals(request.getName())) if ("equipmentId".equals(request.getName())) {
{
equipmentId = String.valueOf(request.getValue()); equipmentId = String.valueOf(request.getValue());
} }
if("createTime".equals(request.getName())) if ("createTime".equals(request.getName())) {
{
createTime = String.valueOf(request.getValue()); createTime = String.valueOf(request.getValue());
} }
} }
} }
return CommonResponseUtil.success(iContingencyOriginalDataService.queryForPage(contingencyName,equipmentId,createTime,commonPageable)); return CommonResponseUtil.success(iContingencyOriginalDataService.queryForPage(contingencyName, equipmentId, createTime, commonPageable));
} }
...@@ -265,12 +177,10 @@ public class TimeLineController extends BaseController{ ...@@ -265,12 +177,10 @@ public class TimeLineController extends BaseController{
"}"; "}";
@Permission @Permission
@ApiOperation(httpMethod = "GET",value = "根据批次号查询时间轴", notes = "根据批次号查询时间轴") @ApiOperation(httpMethod = "GET", value = "根据批次号查询时间轴", notes = "根据批次号查询时间轴")
@RequestMapping(value = "/replay", produces = "application/json;charset=UTF-8", method = RequestMethod.GET) @RequestMapping(value = "/replay", produces = "application/json;charset=UTF-8", method = RequestMethod.GET)
public CommonResponse queryPoint(@RequestParam("batchNo") String batchNo) throws Exception{ public CommonResponse queryPoint(@RequestParam("batchNo") String batchNo) throws Exception {
iRuleRunningSnapshotService.replay(batchNo); iRuleRunningSnapshotService.replay(batchNo);
return CommonResponseUtil.success(); return CommonResponseUtil.success();
} }
} }
package com.yeejoin.amos.fas.business.service.impl; package com.yeejoin.amos.fas.business.service.impl;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.component.rule.RuleTrigger; import com.yeejoin.amos.component.rule.RuleTrigger;
import com.yeejoin.amos.fas.business.action.ContingencyAction; import com.yeejoin.amos.fas.business.action.ContingencyAction;
import com.yeejoin.amos.fas.business.action.model.ContingencyEvent; import com.yeejoin.amos.fas.business.action.model.ContingencyEvent;
import com.yeejoin.amos.fas.business.action.model.ContingencyRo; import com.yeejoin.amos.fas.business.action.model.ContingencyRo;
import com.yeejoin.amos.fas.business.action.util.ContingencyLogPublisher; import com.yeejoin.amos.fas.business.action.util.ContingencyLogPublisher;
import com.yeejoin.amos.fas.business.dao.mapper.FireEquipPointMapper; import com.yeejoin.amos.fas.business.bo.FirePlanAlarmBo;
import com.yeejoin.amos.fas.business.dao.mapper.ImpAndFireEquipMapper; import com.yeejoin.amos.fas.business.dao.mapper.FireEquipPointMapper;
import com.yeejoin.amos.fas.business.dao.mapper.PlanDetailMapper; import com.yeejoin.amos.fas.business.dao.mapper.ImpAndFireEquipMapper;
import com.yeejoin.amos.fas.business.dao.repository.IContingencyOriginalDataDao; import com.yeejoin.amos.fas.business.dao.mapper.PlanDetailMapper;
import com.yeejoin.amos.fas.business.dao.repository.IContingencyPlanInstanceRepository; import com.yeejoin.amos.fas.business.dao.mapper.View3dMapper;
import com.yeejoin.amos.fas.business.service.intfc.IContingencyInstance; import com.yeejoin.amos.fas.business.dao.repository.IContingencyOriginalDataDao;
import com.yeejoin.amos.fas.business.service.intfc.IEquipmentService; import com.yeejoin.amos.fas.business.dao.repository.IContingencyPlanInstanceRepository;
import com.yeejoin.amos.fas.business.service.model.Operate; import com.yeejoin.amos.fas.business.feign.RemoteSecurityService;
import com.yeejoin.amos.fas.business.service.model.OperateGroup; import com.yeejoin.amos.fas.business.service.intfc.IContingencyInstance;
import com.yeejoin.amos.fas.dao.entity.ContingencyOriginalData; import com.yeejoin.amos.fas.business.service.intfc.IRocketMQService;
import com.yeejoin.amos.fas.dao.entity.ContingencyPlanInstance; import com.yeejoin.amos.fas.business.service.model.Operate;
import com.yeejoin.amos.fas.dao.entity.Equipment; import com.yeejoin.amos.fas.business.service.model.OperateGroup;
import org.apache.commons.lang3.ArrayUtils; import com.yeejoin.amos.fas.business.vo.Toke;
import org.codehaus.jackson.map.ObjectMapper; import com.yeejoin.amos.fas.dao.entity.ContingencyOriginalData;
import org.slf4j.Logger; import com.yeejoin.amos.fas.dao.entity.ContingencyPlanInstance;
import org.slf4j.LoggerFactory; import com.yeejoin.amos.fas.dao.entity.Equipment;
import org.springframework.beans.BeanUtils; import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value; import org.codehaus.jackson.map.ObjectMapper;
import org.springframework.data.redis.core.RedisTemplate; import org.slf4j.Logger;
import org.springframework.stereotype.Service; import org.slf4j.LoggerFactory;
import org.springframework.util.CollectionUtils; import org.springframework.beans.BeanUtils;
import org.springframework.util.ObjectUtils; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.client.RestTemplate; import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import java.util.*; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
@Service import org.springframework.util.CollectionUtils;
public class ContingencyInstanceImpl /*extends GenericManagerImpl<ContingencyPlanInstance, String>*/ implements IContingencyInstance { import org.springframework.util.ObjectUtils;
import org.typroject.tyboot.core.foundation.context.RequestContext;
private static final Logger log = LoggerFactory.getLogger(ContingencyInstanceImpl.class);
import java.util.*;
@Autowired
private IContingencyPlanInstanceRepository repository; @Service
public class ContingencyInstanceImpl /*extends GenericManagerImpl<ContingencyPlanInstance, String>*/ implements IContingencyInstance {
@Autowired
IContingencyOriginalDataDao iContingencyOriginalDataDao; private static final Logger log = LoggerFactory.getLogger(ContingencyInstanceImpl.class);
@Autowired static LinkedList<Map<String, String>> fireQueue = new LinkedList<>();
private RestTemplate restTemplate;
@Autowired
@Autowired private IContingencyPlanInstanceRepository repository;
private ImpAndFireEquipMapper impAndFireEquipMapper;
@Autowired
@Autowired IContingencyOriginalDataDao iContingencyOriginalDataDao;
private RedisTemplate redisTemplate;
@Autowired
@Autowired private ImpAndFireEquipMapper impAndFireEquipMapper;
private FireEquipPointMapper fireEquipPointMapper;
@Autowired
@Autowired private RedisTemplate redisTemplate;
private IContingencyInstance iContingencyInstance;
@Autowired
@Autowired private FireEquipPointMapper fireEquipPointMapper;
private IEquipmentService equipmentService;
@Autowired
@Value("${station.name}") IRocketMQService rocketMQService;
private String stationName;
@Autowired
private RemoteSecurityService remoteSecurityService;
private static Map<String, String> stepMap = new HashMap<>();
@Value("${rocket-equip-alarm-topic}")
@Autowired private String rocketTopicFireEquipAlarm;
private RuleTrigger ruleTrigger;
@Autowired
@Value("${spring.application.name}") private View3dMapper view3dMapper;
private String serviceName;
@Value("${station.name}")
/* public ContingencyInstanceImpl(IContingencyPlanInstanceRepository repository) { private String stationName;
super(repository);
this.repository = repository;
}*/ private static Map<String, String> stepMap = new HashMap<>();
@Autowired
ContingencyAction contingencyAction; @Autowired
private RuleTrigger ruleTrigger;
@Autowired
private ContingencyLogPublisher contingencyLogPublisher; @Value("${spring.application.name}")
@Autowired private String serviceName;
private PlanDetailMapper planDetailMapper;
/* public ContingencyInstanceImpl(IContingencyPlanInstanceRepository repository) {
/** super(repository);
* 创建预案执行记录 this.repository = repository;
* }*/
* @param category 一级分类 @Autowired
* @param subCategory 二级分类 ContingencyAction contingencyAction;
* @param content 信息内容
* @param recordType 信息分类 @Autowired
* @param icon 信息显示图标 private ContingencyLogPublisher contingencyLogPublisher;
*/ @Autowired
public ContingencyPlanInstance createInstanceRecord(String instanceNo, String category, String subCategory, String content, String recordType, String icon) { private PlanDetailMapper planDetailMapper;
ContingencyPlanInstance planInstance = new ContingencyPlanInstance();
/**
planInstance.setContent(content); * 创建预案执行记录
planInstance.setIcon(icon); *
planInstance.setRecordType(recordType); * @param category 一级分类
planInstance.setCategory(category); * @param subCategory 二级分类
planInstance.setBatchNo(instanceNo); * @param content 信息内容
planInstance.setCreateDate(new Date()); * @param recordType 信息分类
//计算序号 * @param icon 信息显示图标
int count = repository.countByBatchNo(instanceNo); */
planInstance.setSort(++count); public ContingencyPlanInstance createInstanceRecord(String instanceNo, String category, String subCategory, String content, String recordType, String icon) {
return this.repository.save(planInstance); ContingencyPlanInstance planInstance = new ContingencyPlanInstance();
}
planInstance.setContent(content);
planInstance.setIcon(icon);
/** planInstance.setRecordType(recordType);
* 查询时间轴 planInstance.setCategory(category);
* planInstance.setBatchNo(instanceNo);
* @param instanceNo planInstance.setCreateDate(new Date());
* @return //计算序号
* @throws Exception int count = repository.countByBatchNo(instanceNo);
*/ planInstance.setSort(++count);
public List<ContingencyPlanInstance> queryForTimeLine(String instanceNo, String recordType) throws Exception { return this.repository.save(planInstance);
List<ContingencyPlanInstance> categorys = repository.queryForCategory(instanceNo, recordType); }
return categorys;
}
/**
* 查询时间轴
public Optional<Equipment> fire(String batchNo, String stepCode, String contingencyPlanId, String buttonCode, String buttonState, String stepStateOnbutton) throws Exception { *
//火灾误报 * @param instanceNo
ContingencyOriginalData contingencyOriginalData = iContingencyOriginalDataDao.findByBatchNo(batchNo); * @return
* @throws Exception
String stepKey = batchNo + "_" + stepCode; */
if (stepMap.get(stepKey) == null) public List<ContingencyPlanInstance> queryForTimeLine(String instanceNo, String recordType) throws Exception {
stepMap.put(stepKey, ""); List<ContingencyPlanInstance> categorys = repository.queryForCategory(instanceNo, recordType);
Equipment equipment; return categorys;
if (contingencyOriginalData != null) { }
log.info("数据库中的stepcode:" + contingencyOriginalData.getStep());
contingencyOriginalData.setConfirm(buttonState);
contingencyOriginalData.setRunstep(false); public Optional<Equipment> fire(String batchNo, String stepCode, String contingencyPlanId, String buttonCode, String buttonState, String stepStateOnbutton) throws Exception {
if (contingencyOriginalData.getStepState() == null) //火灾误报
contingencyOriginalData.setStepState(""); ContingencyOriginalData contingencyOriginalData = iContingencyOriginalDataDao.findByBatchNo(batchNo);
if ("CONFIRM".equals(buttonState) String stepKey = batchNo + "_" + stepCode;
&& !contingencyOriginalData.getStepState().contains(stepStateOnbutton) if (stepMap.get(stepKey) == null)
&& stepCode.equals(contingencyOriginalData.getStep())) stepMap.put(stepKey, "");
contingencyOriginalData.setStepState(contingencyOriginalData.getStepState() + stepStateOnbutton); Equipment equipment;
if (contingencyOriginalData != null) {
//请求中的步骤小于以保存的步骤 log.info("数据库中的stepcode:" + contingencyOriginalData.getStep());
if (Integer.parseInt(stepCode) < Integer.parseInt(contingencyOriginalData.getStep())) { contingencyOriginalData.setConfirm(buttonState);
contingencyOriginalData.setRunstep(true); contingencyOriginalData.setRunstep(false);
} if (contingencyOriginalData.getStepState() == null)
contingencyOriginalData.setStepState("");
if (Integer.parseInt(stepCode) > Integer.parseInt(contingencyOriginalData.getStep())) {
contingencyOriginalData.setStepState(stepStateOnbutton); if ("CONFIRM".equals(buttonState)
} && !contingencyOriginalData.getStepState().contains(stepStateOnbutton)
&& stepCode.equals(contingencyOriginalData.getStep()))
iContingencyOriginalDataDao.updateByButton( contingencyOriginalData.setStepState(contingencyOriginalData.getStepState() + stepStateOnbutton);
contingencyOriginalData.getConfirm(),
contingencyOriginalData.getRunstep(), //请求中的步骤小于以保存的步骤
contingencyOriginalData.getStepState(), if (Integer.parseInt(stepCode) < Integer.parseInt(contingencyOriginalData.getStep())) {
contingencyOriginalData.getBatchNo()); contingencyOriginalData.setRunstep(true);
}
//使用原始数据触发规则
if ("CONFIRM".equals(buttonState) if (Integer.parseInt(stepCode) > Integer.parseInt(contingencyOriginalData.getStep())) {
&& !stepMap.get(stepKey).contains(stepStateOnbutton)) contingencyOriginalData.setStepState(stepStateOnbutton);
stepMap.put(stepKey, stepMap.get(stepKey) + stepStateOnbutton); }
ContingencyRo contingencyRo = new ContingencyRo(); iContingencyOriginalDataDao.updateByButton(
contingencyRo.setButtonCode(buttonCode); contingencyOriginalData.getConfirm(),
contingencyRo.setButtonState(buttonState); contingencyOriginalData.getRunstep(),
BeanUtils.copyProperties(contingencyOriginalData, contingencyRo); contingencyOriginalData.getStepState(),
// SetpEnum step = SetpEnum.getStepByCode(stepCode); contingencyOriginalData.getBatchNo());
contingencyRo.setStep(stepCode);
contingencyRo.setStepState(stepMap.get(stepKey)); //使用原始数据触发规则
// contingencyRo.setStep(stepCode); if ("CONFIRM".equals(buttonState)
log.info("stepstate:" + contingencyRo.getStepState()); && !stepMap.get(stepKey).contains(stepStateOnbutton))
log.info("stepCode:" + stepCode); stepMap.put(stepKey, stepMap.get(stepKey) + stepStateOnbutton);
equipment = impAndFireEquipMapper.queryImpEqumtByFireEquipmt(Long.parseLong(contingencyRo.getFireEquipmentId()));
if (equipment != null) { ContingencyRo contingencyRo = new ContingencyRo();
// 获取重点设备胚胎指标 contingencyRo.setButtonCode(buttonCode);
// 获取遥信指标 contingencyRo.setButtonState(buttonState);
List<Map> points = fireEquipPointMapper.getPointsByEquipmentIdAndType(equipment.getId(), "SWITCH"); BeanUtils.copyProperties(contingencyOriginalData, contingencyRo);
HashMap<String, Integer> telesignallingMap = new HashMap<>(); // SetpEnum step = SetpEnum.getStepByCode(stepCode);
for (Map map : points) { contingencyRo.setStep(stepCode);
telesignallingMap.put(map.get("code") + "", (ObjectUtils.isEmpty(map.get("value")) || "false".equals(map.get("value").toString())) ? 0 : 1); contingencyRo.setStepState(stepMap.get(stepKey));
} // contingencyRo.setStep(stepCode);
contingencyRo.setTelesignallingMap(telesignallingMap); log.info("stepstate:" + contingencyRo.getStepState());
//获取遥测指标 log.info("stepCode:" + stepCode);
points = fireEquipPointMapper.getPointsByEquipmentIdAndType(equipment.getId(), "ANALOGUE"); equipment = impAndFireEquipMapper.queryImpEqumtByFireEquipmt(Long.parseLong(contingencyRo.getFireEquipmentId()));
HashMap<String, Double> telemetryMap = new HashMap<>(); if (equipment != null) {
for (Map map : points) { // 获取重点设备胚胎指标
telemetryMap.put(map.get("code") + "", Double.valueOf(ObjectUtils.isEmpty(map.get("value")) ? "0" : map.get("value").toString())); // 获取遥信指标
List<Map> points = fireEquipPointMapper.getPointsByEquipmentIdAndType(equipment.getId(), "SWITCH");
} HashMap<String, Integer> telesignallingMap = new HashMap<>();
contingencyRo.setTelemetryMap(telemetryMap); for (Map map : points) {
telesignallingMap.put(map.get("code") + "", (ObjectUtils.isEmpty(map.get("value")) || "false".equals(map.get("value").toString())) ? 0 : 1);
contingencyRo.setEquipmentCode(equipment.getCode()); }
contingencyRo.setTelesignallingMap(telesignallingMap);
List<String> plan = this.getNumberPlan(Long.parseLong(contingencyRo.getEquipmentId())); //获取遥测指标
points = fireEquipPointMapper.getPointsByEquipmentIdAndType(equipment.getId(), "ANALOGUE");
ruleTrigger.publish(contingencyRo, "换流站消防专项预案/" + plan.get(0), ArrayUtils.toArray(equipment.getName())); HashMap<String, Double> telemetryMap = new HashMap<>();
for (Map map : points) {
publisherPlanLog(stepCode, buttonCode, batchNo); telemetryMap.put(map.get("code") + "", Double.valueOf(ObjectUtils.isEmpty(map.get("value")) ? "0" : map.get("value").toString()));
}
} else { }
throw new Exception("数据异常,请联系管理员."); contingencyRo.setTelemetryMap(telemetryMap);
}
return Optional.ofNullable(equipment); contingencyRo.setEquipmentCode(equipment.getCode());
}
List<String> plan = this.getNumberPlan(Long.parseLong(contingencyRo.getEquipmentId()));
private void publisherPlanLog(String stepCode, String buttonCode, String batchNo) {
ContingencyEvent event = new ContingencyEvent(this); ruleTrigger.publish(contingencyRo, "换流站消防专项预案/" + plan.get(0), ArrayUtils.toArray(equipment.getName()));
JSONObject json = new JSONObject();
JSONObject msgContext = new JSONObject(); publisherPlanLog(stepCode, buttonCode, batchNo);
JSONObject content = new JSONObject(); }
content.put("stepCode", stepCode); } else {
content.put("buttonCode", buttonCode); throw new Exception("数据异常,请联系管理员.");
msgContext.put("type", "clickEvent"); }
msgContext.put("content", content); return Optional.ofNullable(equipment);
json.put("msgType", "message"); }
json.put("msgContext", msgContext);
event.setMsgBody(json.toJSONString()); private void publisherPlanLog(String stepCode, String buttonCode, String batchNo) {
String topic = String.format("/%s/%s/%s", serviceName, stationName, "plan"); ContingencyEvent event = new ContingencyEvent(this);
event.setTopic(topic); JSONObject json = new JSONObject();
event.setMsgType("clickEvent"); JSONObject msgContext = new JSONObject();
event.setContingency(batchNo); JSONObject content = new JSONObject();
contingencyLogPublisher.publish(event); content.put("stepCode", stepCode);
} content.put("buttonCode", buttonCode);
msgContext.put("type", "clickEvent");
msgContext.put("content", content);
public void setButtonExecuted(String batchNo, String contingencyPlanId, String code, String buttonState) throws Exception { json.put("msgType", "message");
ObjectMapper objectMapper = new ObjectMapper(); json.put("msgContext", msgContext);
Optional<ContingencyPlanInstance> contingencyPlanInstance1 = repository.findById(contingencyPlanId); event.setMsgBody(json.toJSONString());
String topic = String.format("/%s/%s/%s", serviceName, stationName, "plan");
ContingencyPlanInstance contingencyPlanInstance = contingencyPlanInstance1.get(); event.setTopic(topic);
event.setMsgType("clickEvent");
if (contingencyPlanInstance1.isPresent()) { event.setContingency(batchNo);
if (contingencyPlanInstance != null && "OPERATE".equals(contingencyPlanInstance.getRecordType())) { contingencyLogPublisher.publish(event);
String operateJson = contingencyPlanInstance.getContent(); }
OperateGroup operateGroup = objectMapper.readValue(operateJson, OperateGroup.class);
List<Operate> operates = operateGroup.getOperate(); public void setButtonExecuted(String batchNo, String contingencyPlanId, String code, String buttonState) throws Exception {
if (!CollectionUtils.isEmpty(operates)) { ObjectMapper objectMapper = new ObjectMapper();
for (Operate operate : operates) { Optional<ContingencyPlanInstance> contingencyPlanInstance1 = repository.findById(contingencyPlanId);
if (code.equals(operate.getCode()) && ("executed".equals(operate.getState()) || "disable".equals(operate.getState()))) { ContingencyPlanInstance contingencyPlanInstance = contingencyPlanInstance1.get();
if ("FIRE_CANCEL".equals(code) || "END_EMERGENCY".equals(code)) {
redisTemplate.delete(RiskSourceServiceImpl.cacheKeyForCanBeRunning()); if (contingencyPlanInstance1.isPresent()) {
} if (contingencyPlanInstance != null && "OPERATE".equals(contingencyPlanInstance.getRecordType())) {
throw new Exception("请勿重复操作."); String operateJson = contingencyPlanInstance.getContent();
} OperateGroup operateGroup = objectMapper.readValue(operateJson, OperateGroup.class);
List<Operate> operates = operateGroup.getOperate();
if ("CONFIRM".equals(buttonState)) { if (!CollectionUtils.isEmpty(operates)) {
if (code.equals(operate.getCode())) { for (Operate operate : operates) {
operate.setState("executed");
if ("FIRE_CANCEL".equals(code) || "END_EMERGENCY".equals(code)) if (code.equals(operate.getCode()) && ("executed".equals(operate.getState()) || "disable".equals(operate.getState()))) {
redisTemplate.delete(RiskSourceServiceImpl.cacheKeyForCanBeRunning()); if ("FIRE_CANCEL".equals(code) || "END_EMERGENCY".equals(code)) {
} else { redisTemplate.delete(RiskSourceServiceImpl.cacheKeyForCanBeRunning());
operate.setState("disable"); }
} throw new Exception("请勿重复操作.");
} }
}
}
if ("CONFIRM".equals(buttonState)) {
if (code.equals(operate.getCode())) {
if (buttonState.equals("CONFIRM")) operate.setState("executed");
contingencyPlanInstance.setRunstate(true); if ("FIRE_CANCEL".equals(code) || "END_EMERGENCY".equals(code))
operateJson = objectMapper.writeValueAsString(operateGroup); redisTemplate.delete(RiskSourceServiceImpl.cacheKeyForCanBeRunning());
contingencyPlanInstance.setContent(operateJson); } else {
repository.save(contingencyPlanInstance); operate.setState("disable");
} }
} }
}
} }
public void setButtonWait(String batchNo, String contingencyPlanId, String buttonState) throws Exception {
ObjectMapper objectMapper = new ObjectMapper(); if (buttonState.equals("CONFIRM"))
Optional<ContingencyPlanInstance> contingencyPlanInstance1 = repository.findById(contingencyPlanId); contingencyPlanInstance.setRunstate(true);
ContingencyPlanInstance contingencyPlanInstance = null; operateJson = objectMapper.writeValueAsString(operateGroup);
if (contingencyPlanInstance1.isPresent()) { contingencyPlanInstance.setContent(operateJson);
contingencyPlanInstance = contingencyPlanInstance1.get(); repository.save(contingencyPlanInstance);
} }
}
if (contingencyPlanInstance != null && "OPERATE".equals(contingencyPlanInstance.getRecordType())) {
String operateJson = contingencyPlanInstance.getContent(); }
OperateGroup operateGroup = objectMapper.readValue(operateJson, OperateGroup.class);
public void setButtonWait(String batchNo, String contingencyPlanId, String buttonState) throws Exception {
List<Operate> operates = operateGroup.getOperate(); ObjectMapper objectMapper = new ObjectMapper();
if (!CollectionUtils.isEmpty(operates)) { Optional<ContingencyPlanInstance> contingencyPlanInstance1 = repository.findById(contingencyPlanId);
for (Operate operate : operates) { ContingencyPlanInstance contingencyPlanInstance = null;
if (contingencyPlanInstance1.isPresent()) {
if ("CONFIRM".equals(buttonState)) { contingencyPlanInstance = contingencyPlanInstance1.get();
operate.setState("executed"); }
}
} if (contingencyPlanInstance != null && "OPERATE".equals(contingencyPlanInstance.getRecordType())) {
} String operateJson = contingencyPlanInstance.getContent();
OperateGroup operateGroup = objectMapper.readValue(operateJson, OperateGroup.class);
if (buttonState.equals("CONFIRM"))
contingencyPlanInstance.setRunstate(true); List<Operate> operates = operateGroup.getOperate();
operateJson = objectMapper.writeValueAsString(operateGroup); if (!CollectionUtils.isEmpty(operates)) {
contingencyPlanInstance.setContent(operateJson); for (Operate operate : operates) {
repository.save(contingencyPlanInstance);
} if ("CONFIRM".equals(buttonState)) {
} operate.setState("executed");
}
}
@Override }
public void updateStep(String step, String batchNo) {
iContingencyOriginalDataDao.updateByButtonStep(step, batchNo); if (buttonState.equals("CONFIRM"))
} contingencyPlanInstance.setRunstate(true);
operateJson = objectMapper.writeValueAsString(operateGroup);
public List<String> getNumberPlan(Long id) { contingencyPlanInstance.setContent(operateJson);
List<String> ruleId = planDetailMapper.getRuleIdByEquipment(id); repository.save(contingencyPlanInstance);
return ruleId; }
} }
}
@Override
public void updateStep(String step, String batchNo) {
iContingencyOriginalDataDao.updateByButtonStep(step, batchNo);
}
@Override
public Optional<Equipment> fire(String batchNo, String stepCode, String contingencyPlanId, String buttonCode, String buttonState, String stepStateOnbutton, String token, String product) throws Exception {
Map<String, String> map = new HashMap<>();
map.put("batchNo", batchNo);
map.put("stepCode", stepCode);
map.put("buttonCode", buttonCode);
map.put("confirm", buttonState);
map.put("contingencyPlanId", contingencyPlanId);
map.put("stepState", stepStateOnbutton);
if (StringUtils.isNotBlank(token) || StringUtils.isNotBlank(product)) {
Toke serverToken = remoteSecurityService.getServerToken();
map.put("token", serverToken.getToke());
map.put("product", serverToken.getProduct());
} else {
map.put("token", token);
map.put("product", product);
}
fireQueue.addLast(map);
//应急指挥给总部推送消息
sendPlanAlarm(batchNo, buttonCode);
return Optional.empty();
}
private void sendPlanAlarm(String batchNo, String buttonCode) {
//确警后推送报警数据
if ("FIRE_CONFIRM".equals(buttonCode)) {
FirePlanAlarmBo firePlanAlarm = view3dMapper.getPlanAlarmInfo(batchNo);
List<FirePlanAlarmBo> list = new ArrayList<FirePlanAlarmBo>();
list.add(firePlanAlarm);
rocketMQService.sendMsg(rocketTopicFireEquipAlarm, "plan_alarm", list);
}
}
@Scheduled(cron = "*/2 * * * * ?")
public void runFireQueue() throws Exception {
if (fireQueue.size() == 0)
return;
Map<String, String> map = fireQueue.getFirst();
String batchNo = map.get("batchNo");
String stepCode = map.get("stepCode");
String buttonCode = map.get("buttonCode");
String confirm = map.get("confirm");
String contingencyPlanId = map.get("contingencyPlanId");
String stepState = map.get("stepState");
String token = map.get("token");
String product = map.get("product");
try {
log.info("fireQueue-size:" + fireQueue.size());
log.info("stepCode:" + map.get("stepCode"));
log.info("buttonCode:" + map.get("buttonCode"));
log.info("confirm:" + map.get("confirm"));
log.info("stepState:" + map.get("stepState"));
RequestContext.setToken(token);
RequestContext.setProduct(product);
setButtonExecuted(batchNo, contingencyPlanId, buttonCode, confirm);
fire(batchNo, stepCode, contingencyPlanId, buttonCode, confirm, stepState);
} catch (Exception e) {
throw e;
} finally {
fireQueue.removeFirst();
}
}
public List<String> getNumberPlan(Long id) {
List<String> ruleId = planDetailMapper.getRuleIdByEquipment(id);
return ruleId;
}
}
...@@ -22,4 +22,6 @@ public interface IContingencyInstance { ...@@ -22,4 +22,6 @@ public interface IContingencyInstance {
Optional<Equipment> fire(String batchNo, String stepCode, String contingencyPlanId, String buttonCode, String buttonState, String stepStateOnbutton) throws Exception; Optional<Equipment> fire(String batchNo, String stepCode, String contingencyPlanId, String buttonCode, String buttonState, String stepStateOnbutton) throws Exception;
void updateStep(String step, String batchNo); void updateStep(String step, String batchNo);
Optional<Equipment> fire(String batchNo, String stepCode, String contingencyPlanId, String buttonCode, String buttonState, String stepStateOnbutton, String token, String product) throws Exception;
} }
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