Commit c0ed1a43 authored by 高建强's avatar 高建强

item:应急处置同步调整提交

parent 02fe2ef2
...@@ -466,19 +466,8 @@ public class ContingencyAction implements CustomerAction { ...@@ -466,19 +466,8 @@ public class ContingencyAction implements CustomerAction {
tempmap1.put("button", buttonJson); tempmap1.put("button", buttonJson);
tempmap1.put("caseId", contingencyPlanId); tempmap1.put("caseId", contingencyPlanId);
result.add(tempmap1); result.add(tempmap1);
this.sendcmd("optionarea", paramObj, result); this.sendcmd("optionarea", paramObj, result);
ContingencyPlanInstance instance = contingencyInstance.getMessageById(contingencyPlanId);
if (instance != null) {
String roleCode = contingencyInstance.getPlanStepRoleCodeByButtonCode(buttonCode);
if (StringUtils.isNotBlank(roleCode)) {
instance.setRoleCode(roleCode);
} else {
instance.setRoleCode(defaultRoleCode);
}
contingencyPlanInstanceMapper.updateMessageById(instance);
}
try { try {
System.out.println("======optionarea 加入队列参数信息======action====="); System.out.println("======optionarea 加入队列参数信息======action=====");
......
package com.yeejoin.amos.fas.business.service.impl; package com.yeejoin.amos.fas.business.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.component.feign.model.FeignClientResult; import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.component.rule.RuleTrigger; import com.yeejoin.amos.component.rule.RuleTrigger;
...@@ -18,6 +17,7 @@ import com.yeejoin.amos.fas.business.service.intfc.*; ...@@ -18,6 +17,7 @@ import com.yeejoin.amos.fas.business.service.intfc.*;
import com.yeejoin.amos.fas.business.service.model.Operate; import com.yeejoin.amos.fas.business.service.model.Operate;
import com.yeejoin.amos.fas.business.service.model.OperateGroup; import com.yeejoin.amos.fas.business.service.model.OperateGroup;
import com.yeejoin.amos.fas.business.util.DateUtils; import com.yeejoin.amos.fas.business.util.DateUtils;
import com.yeejoin.amos.fas.business.vo.ButtonJsonVO;
import com.yeejoin.amos.fas.business.vo.PlanStepJsonVO; import com.yeejoin.amos.fas.business.vo.PlanStepJsonVO;
import com.yeejoin.amos.fas.business.vo.Toke; import com.yeejoin.amos.fas.business.vo.Toke;
import com.yeejoin.amos.fas.common.enums.PlanReplyMessageEnum; import com.yeejoin.amos.fas.common.enums.PlanReplyMessageEnum;
...@@ -42,8 +42,6 @@ import org.springframework.data.redis.core.RedisTemplate; ...@@ -42,8 +42,6 @@ import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionSynchronization;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.typroject.tyboot.core.foundation.context.RequestContext; import org.typroject.tyboot.core.foundation.context.RequestContext;
...@@ -148,6 +146,7 @@ public class ContingencyInstanceImpl implements IContingencyInstance { ...@@ -148,6 +146,7 @@ public class ContingencyInstanceImpl implements IContingencyInstance {
* @param recordType 信息分类 * @param recordType 信息分类
* @param icon 信息显示图标 * @param icon 信息显示图标
*/ */
@Transactional
public ContingencyPlanInstance createInstanceRecord(String instanceNo, String category, String subCategory, String content, String recordType, String icon) { public ContingencyPlanInstance createInstanceRecord(String instanceNo, String category, String subCategory, String content, String recordType, String icon) {
ContingencyPlanInstance planInstance = new ContingencyPlanInstance(); ContingencyPlanInstance planInstance = new ContingencyPlanInstance();
if ("MESSAGE".equalsIgnoreCase(recordType)) { if ("MESSAGE".equalsIgnoreCase(recordType)) {
...@@ -244,12 +243,12 @@ public class ContingencyInstanceImpl implements IContingencyInstance { ...@@ -244,12 +243,12 @@ public class ContingencyInstanceImpl implements IContingencyInstance {
BeanUtils.copyProperties(contingencyOriginalData, contingencyRo); BeanUtils.copyProperties(contingencyOriginalData, contingencyRo);
contingencyRo.setStep(stepCode); contingencyRo.setStep(stepCode);
contingencyRo.setStepState(stepMap.get(stepKey)); contingencyRo.setStepState(stepMap.get(stepKey));
// Object isMock = redisTemplate.opsForValue().get("isMock"); String isMock = redisTemplate.boundValueOps("isMock").get(0, -1);
// if (isMock != null) { if (isMock != null) {
// contingencyRo.setIsMock("1".equals(isMock.toString())); contingencyRo.setIsMock("true".equals(isMock));
// } else { } else {
// contingencyRo.setIsMock(false); contingencyRo.setIsMock(false);
// } }
log.info("stepstate:" + contingencyRo.getStepState()); log.info("stepstate:" + contingencyRo.getStepState());
log.info("stepCode:" + stepCode); log.info("stepCode:" + stepCode);
equipment = impAndFireEquipMapper.queryImpEqumtByFireEquipmt(Long.parseLong(contingencyRo.getFireEquipmentId())); equipment = impAndFireEquipMapper.queryImpEqumtByFireEquipmt(Long.parseLong(contingencyRo.getFireEquipmentId()));
...@@ -284,9 +283,6 @@ public class ContingencyInstanceImpl implements IContingencyInstance { ...@@ -284,9 +283,6 @@ public class ContingencyInstanceImpl implements IContingencyInstance {
ruleTrigger.publish(contingencyRo, "换流站消防专项预案/" + plan.get(0), ArrayUtils.toArray(equipment.getName())); ruleTrigger.publish(contingencyRo, "换流站消防专项预案/" + plan.get(0), ArrayUtils.toArray(equipment.getName()));
publisherPlanLog(stepCode, buttonCode, batchNo); publisherPlanLog(stepCode, buttonCode, batchNo);
// 更新预案执行Json串
// planVisual3dService.updatePlanStep(batchNo, stepCode, contingencyPlanId, buttonCode);
} }
} else { } else {
throw new Exception("数据异常,请联系管理员."); throw new Exception("数据异常,请联系管理员.");
...@@ -331,12 +327,7 @@ public class ContingencyInstanceImpl implements IContingencyInstance { ...@@ -331,12 +327,7 @@ public class ContingencyInstanceImpl implements IContingencyInstance {
@Transactional @Transactional
public void setButtonExecuted(String batchNo, String contingencyPlanId, String code, String buttonState) throws Exception { public void setButtonExecuted(String batchNo, String contingencyPlanId, String code, String buttonState) throws Exception {
ObjectMapper objectMapper = new ObjectMapper(); ObjectMapper objectMapper = new ObjectMapper();
// Optional<ContingencyPlanInstance> contingencyPlanInstance1 = repository.findById(contingencyPlanId);
System.out.println("=========================setButtonExecuted======================");
ContingencyPlanInstance contingencyPlanInstance = contingencyInstance.getMessageById(contingencyPlanId); ContingencyPlanInstance contingencyPlanInstance = contingencyInstance.getMessageById(contingencyPlanId);
// ContingencyPlanInstance contingencyPlanInstance = contingencyPlanInstance1.get();
System.out.println(JSON.toJSON(contingencyPlanInstance));
if (contingencyPlanInstance != null) { if (contingencyPlanInstance != null) {
if ("OPERATE".equals(contingencyPlanInstance.getRecordType())) { if ("OPERATE".equals(contingencyPlanInstance.getRecordType())) {
String operateJson = contingencyPlanInstance.getContent(); String operateJson = contingencyPlanInstance.getContent();
...@@ -345,7 +336,6 @@ public class ContingencyInstanceImpl implements IContingencyInstance { ...@@ -345,7 +336,6 @@ public class ContingencyInstanceImpl implements IContingencyInstance {
List<Operate> operates = operateGroup.getOperate(); List<Operate> operates = operateGroup.getOperate();
if (!CollectionUtils.isEmpty(operates)) { if (!CollectionUtils.isEmpty(operates)) {
for (Operate operate : operates) { for (Operate operate : operates) {
// if (code.equals(operate.getCode()) && ("executed".equals(operate.getState()) || "disable".equals(operate.getState()))) { // if (code.equals(operate.getCode()) && ("executed".equals(operate.getState()) || "disable".equals(operate.getState()))) {
if (code.equals(operate.getCode()) && ("executed".equals(operate.getState()))) { if (code.equals(operate.getCode()) && ("executed".equals(operate.getState()))) {
if ("FIRE_CANCEL".equals(code) || "END_EMERGENCY".equals(code)) { if ("FIRE_CANCEL".equals(code) || "END_EMERGENCY".equals(code)) {
...@@ -389,17 +379,6 @@ public class ContingencyInstanceImpl implements IContingencyInstance { ...@@ -389,17 +379,6 @@ public class ContingencyInstanceImpl implements IContingencyInstance {
String topic = String.format("/%s/%s/%s", serviceName, stationName, "plan"); String topic = String.format("/%s/%s/%s", serviceName, stationName, "plan");
webMqttComponent.publish(topic, "{\"msgType\":\"operateConfirmMessage\"}"); webMqttComponent.publish(topic, "{\"msgType\":\"operateConfirmMessage\"}");
} }
// if (buttonState.equals("CONFIRM")) {
// // TODO 数字化换流站组态屏数据推送,需要在事务提交之后,否侧事务隔离查询不出数据
// TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
// @Override
// public void afterCommit() {
// // 事物提交后业务逻辑
// String topic = String.format("/%s/%s/%s", serviceName, stationName, "plan");
// webMqttComponent.publish(topic, "{\"msgType\":\"operateConfirmMessage\"}");
// }
// });
// }
// 异步数据同步之消息发送 // 异步数据同步之消息发送
contingencyPlanInstanceDataSync(instance); contingencyPlanInstanceDataSync(instance);
} }
...@@ -490,6 +469,12 @@ public class ContingencyInstanceImpl implements IContingencyInstance { ...@@ -490,6 +469,12 @@ public class ContingencyInstanceImpl implements IContingencyInstance {
@Override @Override
public ContingencyPlanInstance updateExtendColumn(ContingencyPlanInstance contingencyPlanInstance) { public ContingencyPlanInstance updateExtendColumn(ContingencyPlanInstance contingencyPlanInstance) {
String recordType = contingencyPlanInstance.getRecordType();
if ("OPERATE".equals(recordType)) {
ButtonJsonVO buttonJsonVO = JSONObject.parseObject(contingencyPlanInstance.getContent(), ButtonJsonVO.class);
Map<String, Object> map = buttonJsonVO.getOperate().get(buttonJsonVO.getOperate().size() - 1);
contingencyPlanInstance.setRoleCode(getPlanStepRoleCodeByButtonCode(map.get("code").toString()));
} else {
String appKey = redisTemplate.opsForValue().get("action:appKey").toString(); String appKey = redisTemplate.opsForValue().get("action:appKey").toString();
String product = redisTemplate.opsForValue().get("action:product").toString(); String product = redisTemplate.opsForValue().get("action:product").toString();
String token = redisTemplate.opsForValue().get("action:token").toString(); String token = redisTemplate.opsForValue().get("action:token").toString();
...@@ -534,6 +519,7 @@ public class ContingencyInstanceImpl implements IContingencyInstance { ...@@ -534,6 +519,7 @@ public class ContingencyInstanceImpl implements IContingencyInstance {
contingencyPlanInstance.setStartUserName(user.getRealName()); contingencyPlanInstance.setStartUserName(user.getRealName());
Map<String, String> userInfo = contingencyPlanInstanceMapper.getUserByUserId(user.getUserId()); Map<String, String> userInfo = contingencyPlanInstanceMapper.getUserByUserId(user.getUserId());
contingencyPlanInstance.setPersonImg(ObjectUtils.isEmpty(userInfo) ? personImg : userInfo.getOrDefault("personImg", personImg)); contingencyPlanInstance.setPersonImg(ObjectUtils.isEmpty(userInfo) ? personImg : userInfo.getOrDefault("personImg", personImg));
}
return contingencyPlanInstance; return contingencyPlanInstance;
} }
...@@ -555,13 +541,13 @@ public class ContingencyInstanceImpl implements IContingencyInstance { ...@@ -555,13 +541,13 @@ public class ContingencyInstanceImpl implements IContingencyInstance {
FirePlanAlarmBo firePlanAlarm = view3dMapper.getPlanAlarmInfo(batchNo); FirePlanAlarmBo firePlanAlarm = view3dMapper.getPlanAlarmInfo(batchNo);
firePlanAlarm.setWarningState("1"); firePlanAlarm.setWarningState("1");
list.add(firePlanAlarm); list.add(firePlanAlarm);
}else if ("END_EMERGENCY".equals(buttonCode)) { } else if ("END_EMERGENCY".equals(buttonCode)) {
FirePlanAlarmBo firePlanAlarm = view3dMapper.getPlanAlarmInfo(batchNo); FirePlanAlarmBo firePlanAlarm = view3dMapper.getPlanAlarmInfo(batchNo);
firePlanAlarm.setWarningState("0"); firePlanAlarm.setWarningState("0");
firePlanAlarm.setWarningTime(DateUtils.date2LongStr(new Date())); firePlanAlarm.setWarningTime(DateUtils.date2LongStr(new Date()));
list.add(firePlanAlarm); list.add(firePlanAlarm);
} }
if(!ObjectUtils.isEmpty(list)){ if (!ObjectUtils.isEmpty(list)) {
rocketMQService.sendMsg(rocketTopicFireEquipAlarm, "plan_alarm", list); rocketMQService.sendMsg(rocketTopicFireEquipAlarm, "plan_alarm", list);
} }
...@@ -604,22 +590,6 @@ public class ContingencyInstanceImpl implements IContingencyInstance { ...@@ -604,22 +590,6 @@ public class ContingencyInstanceImpl implements IContingencyInstance {
setButtonExecuted(batchNo, contingencyPlanId, buttonCode, confirm); setButtonExecuted(batchNo, contingencyPlanId, buttonCode, confirm);
fire(batchNo, stepCode, contingencyPlanId, buttonCode, confirm, stepState); fire(batchNo, stepCode, contingencyPlanId, buttonCode, confirm, stepState);
planVisual3dService.updatePlanStep(batchNo, stepCode, contingencyPlanId, buttonCode, isExecute); planVisual3dService.updatePlanStep(batchNo, stepCode, contingencyPlanId, buttonCode, isExecute);
// TODO 数字化换流站组态屏数据推送,需要在事务提交之后,否侧事务隔离查询不出数据
// TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
// @Override
// public void afterCommit() {
// // 事物提交后业务逻辑
// // 更新预案执行Json串
//// ToipResponse byBatchNo = planVisual3dService.getPlanStepByBatchNo(batchNo);
// try {
// setButtonExecuted(batchNo, contingencyPlanId, buttonCode, confirm);
// fire(batchNo, stepCode, contingencyPlanId, buttonCode, confirm, stepState);
// planVisual3dService.updatePlanStep(batchNo, stepCode, contingencyPlanId, buttonCode, isExecute);
// } catch (Exception e) {
// throw new RuntimeException(e);
// }
// }
// });
} catch (Exception e) { } catch (Exception e) {
throw e; throw e;
} finally { } finally {
......
...@@ -208,7 +208,7 @@ public class ContingencyPlanServiceImpl implements IContingencyPlanService { ...@@ -208,7 +208,7 @@ public class ContingencyPlanServiceImpl implements IContingencyPlanService {
deviceData.setCode(equipmentSpecific.getCode()); deviceData.setCode(equipmentSpecific.getCode());
boolean isMock = vo.getStatus() == 4; boolean isMock = vo.getStatus() == 4;
deviceData.setIsMock(isMock); deviceData.setIsMock(isMock);
redisTemplate.opsForValue().set("isMock", isMock ? "1" : "0"); redisTemplate.opsForValue().set("isMock", isMock ? "true" : "false");
String batchNo = equipmentHandlerService.executeDynamicPlan(deviceData, equipment, equipmentSpecific, toke, operationRecord.getId()); String batchNo = equipmentHandlerService.executeDynamicPlan(deviceData, equipment, equipmentSpecific, toke, operationRecord.getId());
//更新模型状态 //更新模型状态
PlanDetail planDetail = PlanDetailOp.get(); PlanDetail planDetail = PlanDetailOp.get();
......
...@@ -8,6 +8,7 @@ import org.apache.commons.io.IOUtils; ...@@ -8,6 +8,7 @@ import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource; import org.springframework.core.io.Resource;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.IOException; import java.io.IOException;
...@@ -25,6 +26,9 @@ public class PlanRuleServiceImpl implements IPlanRuleService { ...@@ -25,6 +26,9 @@ public class PlanRuleServiceImpl implements IPlanRuleService {
@Value("classpath:/json/plan-step.json") @Value("classpath:/json/plan-step.json")
private Resource planStepResource; private Resource planStepResource;
@Autowired
private RedisTemplate redisTemplate;
@Override @Override
public void updatePlanRuleByBatchNo(String batchNo) { public void updatePlanRuleByBatchNo(String batchNo) {
try { try {
...@@ -33,6 +37,7 @@ public class PlanRuleServiceImpl implements IPlanRuleService { ...@@ -33,6 +37,7 @@ public class PlanRuleServiceImpl implements IPlanRuleService {
String json = IOUtils.toString(planStepResource.getInputStream(), String.valueOf(StandardCharsets.UTF_8)); String json = IOUtils.toString(planStepResource.getInputStream(), String.valueOf(StandardCharsets.UTF_8));
planRule.setPlanStep(json); planRule.setPlanStep(json);
planRuleDao.save(planRule); planRuleDao.save(planRule);
redisTemplate.delete("isMock");
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException("初始化预案规则planStep数据失败!"); throw new RuntimeException("初始化预案规则planStep数据失败!");
} }
......
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