Commit 74f891e6 authored by tangwei's avatar tangwei

结决冲突

parents aa936af5 8a673af9
......@@ -13,7 +13,7 @@
<parent>
<groupId>com.yeejoin.amos</groupId>
<artifactId>YeeAmosFireAutoSysRoot</artifactId>
<version>3.7.0.4</version>
<version>3.7.0.6</version>
</parent>
<!-- <dependencies>
......
......@@ -14,14 +14,14 @@
<parent>
<groupId>com.yeejoin.amos</groupId>
<artifactId>YeeAmosFireAutoSysRoot</artifactId>
<version>3.7.0.4</version>
<version>3.7.0.6</version>
</parent>
<dependencies>
<dependency>
<groupId>com.yeejoin.amos</groupId>
<artifactId>YeeAmosFireAutoSysCommon</artifactId>
<version>3.7.0.4</version>
<version>3.7.0.6</version>
</dependency>
<dependency>
......
......@@ -138,12 +138,6 @@ public class ContingencyAction implements CustomerAction {
@Value("${maparea.action.is-area}")
private String isArea;
// @Value("${plan.default.roleCode}")
// private String defaultRoleCode;
@Value("${plan.web.isUpdatePlanStep}")
private Boolean isUpdatePlanStep;
private static Map<String, String> OPERATE_RECORD_ID = new HashMap<>();
private static Map<String, ContingencyPlanInstance> OPERATE_CONTINGENCYPLAN_INSTANCE = new HashMap<>();
......@@ -455,7 +449,6 @@ public class ContingencyAction implements CustomerAction {
SafteyPlanResult result = new SafteyPlanResult();
Map<String, Object> tempmap1 = new HashMap<>();
// String contingencyPlanId = getContingencyPlanId(contingencyRo.getBatchNo(), actionName, icon, tips, buttonJson);
ContingencyPlanInstance contingencyPlanInstance = getContingencyPlan(contingencyRo.getBatchNo(), actionName, icon, tips, buttonJson);
String contingencyPlanId = contingencyPlanInstance.getId();
tempmap1.put("actionName", actionName);
......@@ -466,7 +459,7 @@ public class ContingencyAction implements CustomerAction {
result.add(tempmap1);
this.sendcmd("optionarea", paramObj, result);
if (!isUpdatePlanStep) {
// 默认调用当前动作
try {
ButtonJsonVO buttonJsonVO = JSONObject.parseObject(buttonJson, ButtonJsonVO.class);
Map<String, Object> map = buttonJsonVO.getOperate().get(buttonJsonVO.getOperate().size() - 1);
......@@ -474,7 +467,6 @@ public class ContingencyAction implements CustomerAction {
} catch (Exception e) {
log.error("optionarea 加入队列失败-->" + e.getMessage());
}
}
MessageVO messageVO = new MessageVO();
messageVO.setTitle("应急处置事项提醒");
......@@ -488,25 +480,25 @@ public class ContingencyAction implements CustomerAction {
}
}
private boolean sendButton(String batchNo, String contingencyPlanId, String equipmentId, String actionName, String buttonJson) {
ObjectMapper objectMapper = new ObjectMapper();
try {
Map button = objectMapper.readValue(buttonJson, Map.class);
Map operateInstance = (Map) ((List) button.get("operate")).get(0);
ContingencyDeviceStatus contingencyDeviceStatus = new ContingencyDeviceStatus();
contingencyDeviceStatus.setActionName(actionName);
contingencyDeviceStatus.setButtonCode(String.valueOf(operateInstance.get("code")));
contingencyDeviceStatus.setConfirm("CONFIRM");
contingencyDeviceStatus.setContingencyPlanId(contingencyPlanId);
contingencyDeviceStatus.setEquipmentId(equipmentId);
contingencyDeviceStatus.setStepCode(String.valueOf(button.get("stepCode")));
contingencyDeviceStatus.setStepState(String.valueOf(operateInstance.get("stepState")));
riskSourceService.queryContingencyDeviceStatus(contingencyDeviceStatus);
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
// private boolean sendButton(String batchNo, String contingencyPlanId, String equipmentId, String actionName, String buttonJson) {
// ObjectMapper objectMapper = new ObjectMapper();
// try {
// Map button = objectMapper.readValue(buttonJson, Map.class);
// Map operateInstance = (Map) ((List) button.get("operate")).get(0);
// ContingencyDeviceStatus contingencyDeviceStatus = new ContingencyDeviceStatus();
// contingencyDeviceStatus.setActionName(actionName);
// contingencyDeviceStatus.setButtonCode(String.valueOf(operateInstance.get("code")));
// contingencyDeviceStatus.setConfirm("CONFIRM");
// contingencyDeviceStatus.setContingencyPlanId(contingencyPlanId);
// contingencyDeviceStatus.setEquipmentId(equipmentId);
// contingencyDeviceStatus.setStepCode(String.valueOf(button.get("stepCode")));
// contingencyDeviceStatus.setStepState(String.valueOf(operateInstance.get("stepState")));
// riskSourceService.queryContingencyDeviceStatus(contingencyDeviceStatus);
// } catch (IOException e) {
// e.printStackTrace();
// }
// return false;
// }
/**
......@@ -855,6 +847,7 @@ public class ContingencyAction implements CustomerAction {
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 batchNo = contingencyRo.getBatchNo();
long startTime = System.currentTimeMillis();
if (!findByBatchNoAndStatus(batchNo)) {
ContingencyPlanInstance contingencyPlanInstance = getContingencyPlan(contingencyRo.getBatchNo(), actionName, icon, tips, buttonJson);
String contingencyPlanId = contingencyPlanInstance.getId();
......@@ -866,6 +859,8 @@ public class ContingencyAction implements CustomerAction {
e.printStackTrace();
}
}
long endTime = System.currentTimeMillis();
log.warn("自动执行动作V2耗时+++++++++++++++++++++++++++++++++" + (endTime - startTime) / 1000 + "秒" + ", 当前步骤编号: " + stepCode);
}
public void sendcmd(String msgType, SafteyPlanResult result) {
......@@ -916,8 +911,8 @@ public class ContingencyAction implements CustomerAction {
this.sendweb("recordarea", contingencyRo, result);
updateNumberPlan(batchNo);
// 应急处置中断,初始化planStep,json数据;更新预案结束时间
// planRuleService.updatePlanRuleByBatchNo(batchNo);
planStepService.initPlanStep();
// 更新预案结束时间
contingencyInstanceInfoService.updateEndTimeById(batchNo);
}
......
......@@ -6,18 +6,66 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.typroject.tyboot.component.emq.EmqKeeper;
import javax.annotation.PostConstruct;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
@Component
public class WebMqttComponent {
@Autowired
private EmqKeeper emqKeeper;
public void publish(String topic, String jsonStr) {
BlockingQueue<Message> queue = new LinkedBlockingQueue<Message>();
ExecutorService service = null;
@PostConstruct
public void init() {
service = Executors.newSingleThreadExecutor();
service.execute(new Runnable() {
@Override
public void run() {
while (true) {
try {
this.emqKeeper.getMqttClient().publish(topic, jsonStr.getBytes(), 2, false);
} catch (MqttPersistenceException e) {
e.printStackTrace();
} catch (MqttException e) {
Message msg = queue.take();
emqKeeper.getMqttClient().publish(msg.getTopic(), msg.getJsonStr().getBytes(), 0, false);
} catch (Exception e) {
e.printStackTrace();
}
}
}
});
}
public void publish(String topic, String jsonStr) {
Message msg = new Message(topic, jsonStr);
queue.add(msg);
}
class Message {
private String topic;
private String jsonStr;
public Message(String topic, String jsonStr) {
this.topic = topic;
this.jsonStr = jsonStr;
}
public String getTopic() {
return topic;
}
public void setTopic(String topic) {
this.topic = topic;
}
public String getJsonStr() {
return jsonStr;
}
public void setJsonStr(String jsonStr) {
this.jsonStr = jsonStr;
}
}
}
......@@ -31,10 +31,10 @@ import org.springframework.messaging.MessageHandler;
@IntegrationComponentScan
public class WebMqttSubscribe {
@Value("${emqx.user-name}")
@Value("${emqx.client-user-name}")
private String userName;
@Value("${emqx.password}")
@Value("${emqx.client-password}")
private String password;
@Value("${emqx.broker}")
......
......@@ -167,7 +167,6 @@ public class PlanVisual3dController extends BaseController {
return CommonResponseUtil.successNew(planVisual3dService.updatePlanStep(planStepVo));
}
@Permission
@ApiOperation(value = "根据批次号获取预案的记录", notes = "根据R批次号获取预案的记录")
@GetMapping(value = "/plan/getPlaneRecord")
public ResponseModel getPlaneRecord(@RequestParam("batchNo") String batchNo, @RequestParam(required = false) Boolean isNewest) {
......@@ -185,19 +184,6 @@ public class PlanVisual3dController extends BaseController {
}
@Permission
@ApiOperation(value = "根据批次号获取预案状态", notes = "根据批次号获取预案状态")
@GetMapping(value = "/plan/getPlaneIfDataMock")
public ResponseModel getPlaneRecord(@RequestParam("batchNo") String batchNo) {
if (StringUtils.isBlank(batchNo)) {
batchNo = planVisual3dService.getLastBatchNo();
}
if (StringUtils.isBlank(batchNo)) {
return CommonResponseUtil.successNew(null);
}
return CommonResponseUtil.successNew(planVisual3dService.judgeIfPlanDataMock(batchNo));
}
@Permission
@ApiOperation(value = "预案智能辅助", notes = "预案智能辅助")
@GetMapping(value = "/plan/getPlaneRecordOne")
public ResponseModel getPlaneRecordOne() {
......
......@@ -236,11 +236,8 @@ public class ContingencyPlanServiceImpl implements IContingencyPlanService {
instanceInfo.setId(batchNo);
instanceInfo.setName(detail.getPlanName());
instanceInfo.setOrgCode(detail.getOrgCode());
instanceInfo.setPosition(equipmentSpecific.getPosition());
WarehouseStructure warehouseStructure = warehouseStructureMapper.getMessageByRiskId(equipmentSpecific.getId());
if (warehouseStructure != null) {
instanceInfo.setPosition(warehouseStructure.getName());
}
contingencyInstanceInfoService.addDisposalDetails(instanceInfo);
// 异步数据同步之消息发送
planOperationRecordDataSync(record);
......
......@@ -552,41 +552,39 @@ public class HandlerMqttMessageImpl implements IEquipmentHandlerService {
contingencyRo.setEquipmentOrgCode(equipment.getOrgCode());
contingencyRo.getParams().put("equipmentId", equipment.getId());
contingencyRo.setIsMock(isMock);
WarehouseStructure warehouseStructure = warehouseStructureMapper.getMessageById(equipmentSpecific.getWarehouseStructureId());
if (warehouseStructure != null) {
contingencyRo.setPosition(warehouseStructure.getName());
}
contingencyRo.setPosition(equipmentSpecific.getPosition());
//查询重点设备关联视频点位
Map<String, Object> cameraInfo = impAndFireEquipMapper.queryCamera(String.valueOf(equipment.getId()));
if (cameraInfo != null && !cameraInfo.isEmpty()) {
contingencyRo.setCameraCodes(String.valueOf(cameraInfo.get("codes")));
contingencyRo.setCameraIds(String.valueOf(cameraInfo.get("ids")));
}
// Map<String, Object> cameraInfo = impAndFireEquipMapper.queryCamera(String.valueOf(equipment.getId()));
// if (cameraInfo != null && !cameraInfo.isEmpty()) {
// contingencyRo.setCameraCodes(String.valueOf(cameraInfo.get("codes")));
// contingencyRo.setCameraIds(String.valueOf(cameraInfo.get("ids")));
// }
//查询重点设备关联消防炮
Map fireMonitorInfo = equipmentSpecificMapper.queryFireMonitor(String.valueOf(equipment.getId()), fireMonitor);
// Map fireMonitorInfo = equipmentSpecificMapper.queryFireMonitor(String.valueOf(equipment.getId()), fireMonitor);
// if (fireMonitorInfo != null && !fireMonitorInfo.isEmpty()) {
// contingencyRo.setFireMonitorCodes(String.valueOf(fireMonitorInfo.get("codes")));
// contingencyRo.setFireMonitorIds(String.valueOf(fireMonitorInfo.get("ids")));
// }
List<PreplanPicture> pictures = iPreplanPictureDao.findByEquipmentId(Long.valueOf(equipment.getId()));
if (!CollectionUtils.isEmpty(pictures)) {
for (PreplanPicture picture : pictures) {
if (1 == picture.getType()) {
contingencyRo.setPicture1(picture.getPicture());
}
if (2 == picture.getType()) {
contingencyRo.setPicture2(picture.getPicture());
}
if (3 == picture.getType()) {
contingencyRo.setPicture3(picture.getPicture());
}
if (4 == picture.getType()) {
contingencyRo.setPicture4(picture.getPicture());
}
}
}
// List<PreplanPicture> pictures = iPreplanPictureDao.findByEquipmentId(Long.valueOf(equipment.getId()));
// if (!CollectionUtils.isEmpty(pictures)) {
// for (PreplanPicture picture : pictures) {
// if (1 == picture.getType()) {
// contingencyRo.setPicture1(picture.getPicture());
// }
// if (2 == picture.getType()) {
// contingencyRo.setPicture2(picture.getPicture());
// }
// if (3 == picture.getType()) {
// contingencyRo.setPicture3(picture.getPicture());
// }
// if (4 == picture.getType()) {
// contingencyRo.setPicture4(picture.getPicture());
// }
// }
// }
// 获取遥信指标,暂不处理 code = 设备编码iot_code-指标项name_key
// List<Map> points = fireEquipPointMapper.getPointsByEquipmentIdAndType(equipment.getId(), "SWITCH");//物联属性指标 and 为true或false
......
......@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.component.feign.config.InnerInvokException;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.fas.business.action.model.ContingencyRo;
import com.yeejoin.amos.fas.business.action.mq.WebMqttComponent;
import com.yeejoin.amos.fas.business.constants.FasConstant;
import com.yeejoin.amos.fas.business.dao.mapper.*;
......@@ -280,6 +281,7 @@ public class PlanVisual3dServiceImpl implements IPlanVisual3dService {
if (!ObjectUtils.isEmpty(infoVO.getPosition())) {
contingencyOriginalData.setPosition(infoVO.getPosition());
}
toipResponse.setMockData(judgeIfPlanDataMock(batchNo));
toipResponse.setMsgType("recordarea");
toipResponse.setMsgContext(msgContext);
toipResponse.setContingency(contingencyOriginalData);
......@@ -287,7 +289,6 @@ public class PlanVisual3dServiceImpl implements IPlanVisual3dService {
return toipResponse;
}
@Override
public boolean judgeIfPlanDataMock(String batchNo) {
PlanOperationRecord planOperationRecord = planOperationRecordDao.findByBatchNo(batchNo);
if (planOperationRecord == null) {
......@@ -487,7 +488,11 @@ public class PlanVisual3dServiceImpl implements IPlanVisual3dService {
dto.setContent(StringUtil.isNotEmpty(dto.getContent()) ? dto.getContent() : "");
repository.save(dto);
String topic = String.format("/%s/%s/%s", serviceName, stationName, "plan");
webMqttComponent.publish(topic, "{\"msgType\":\"replayMessage\"}");
Map<String, Object> map = new HashMap<>();
map.put("contingency", new ContingencyRo());
map.put("msgContext", Collections.EMPTY_MAP);
map.put("msgType", "replayMessage");
webMqttComponent.publish(topic, JSON.toJSONString(map));
return dto;
}
......
......@@ -74,14 +74,6 @@ public interface IPlanVisual3dService {
ToipResponse getPlaneRecordByBatchNo(String batchNo);
/**
* 根据批次号获取预案状态
*
* @param batchNo 批次号
* @return 预案记录
*/
boolean judgeIfPlanDataMock(String batchNo);
/**
* 根据批次号获取预案记录
*
* @param batchNo 批次号
......
......@@ -32,11 +32,6 @@ public class ToipResponse implements Serializable
private static final long serialVersionUID = -7035041461377884452L;
/**
*
*/
/**
* 界面域
* 例如
* dispatch.map
......@@ -57,6 +52,8 @@ public class ToipResponse implements Serializable
*/
private Object contingency;
private boolean mockData;
public String toJsonStr() {
return JSON.toJSONString(this,SerializerFeature.WriteMapNullValue,SerializerFeature.DisableCircularReferenceDetect,SerializerFeature.SkipTransientField);
}
......
......@@ -62,4 +62,7 @@ public class EquipmentSpecificForRiskVo {
@ApiModelProperty(value = "设备类型编码")
private String equipmentCode = "";
@ApiModelProperty(value = "位置")
private String position = "";
}
......@@ -9,6 +9,10 @@ public class PlanStepJsonVO {
private String stepCode;
private String stepName;
private String stepStatus;
/**
* 是否并行,用于卡片展示;1:是,0:否
*/
private String isParallel;
private String roleCode;
private String buttonCode;
......@@ -17,7 +21,12 @@ public class PlanStepJsonVO {
private String caseId;
private String buttonJson;
private String time = "";
/**
* 进度条标识
*/
private boolean showLine = false;
/**
* 1:是,0:否
*/
......@@ -44,7 +53,7 @@ public class PlanStepJsonVO {
private String outAndOr;
/**
* 1自动,0非自动
* 是否自动执行;1自动,0非自动
*/
private Integer isAuto;
}
......@@ -9,7 +9,7 @@
<parent>
<groupId>com.yeejoin.amos</groupId>
<artifactId>YeeAmosFireAutoSysRoot</artifactId>
<version>3.7.0.4</version>
<version>3.7.0.6</version>
</parent>
<dependencies>
......@@ -17,7 +17,7 @@
<dependency>
<groupId>com.yeejoin.amos</groupId>
<artifactId>YeeAmosFireAutoSysService</artifactId>
<version>3.7.0.4</version>
<version>3.7.0.6</version>
</dependency>
</dependencies>
......
......@@ -22,6 +22,7 @@ eureka.client.fetch-registry = true
eureka.client.healthcheck.enabled = false
eureka.client.fetchRegistry = true
eureka.instance.prefer-ip-address=true
#eureka.instance.ip-address = 172.16.11.201
#redis
spring.redis.database=1
......@@ -76,7 +77,7 @@ rocketmq.producer.groupName2=groupName2
rocketmq.producer.namesrvAddr2=172.16.3.135:9876
#\u89C4\u5219ip\u914D\u7F6E\uFF0C\u7528\u4E8E\u591A\u7F51\u5361\u53CAdocker\u955C\u50CF\u542F\u52A8\u65F6\u6DFB\u52A0
#rule.definition.local-ip=172.16.11.201
#rule.definition.local-ip=172.16.3.51
rocket-plan-topic=topic_fire_emergency_plan
rocket-equip-alarm-topic=topic_fire_equip_alarm
......
......@@ -824,4 +824,23 @@
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8mb3 ROW_FORMAT=DYNAMIC COMMENT='应急预案执行节点报文';
</sql>
</changeSet>
<changeSet author="gaojianqiang" id="20230316-1">
<preConditions onFail="MARK_RAN">
<not>
<indexExists indexName="idx_batch_no" />
</not>
</preConditions>
<comment>预案索引优化</comment>
<sql>
ALTER TABLE `contingency_plan_instance`
ADD INDEX `idx_batch_no`(`batch_no`) USING BTREE;
ALTER TABLE `c_plan_operation_record`
ADD INDEX `idx_batch_no`(`batch_no`) USING BTREE;
ALTER TABLE `contingency_original_data`
DROP INDEX `INDEX_BATCH_NO`,
ADD INDEX `INDEX_BATCH_NO`(`batch_No`) USING BTREE;
</sql>
</changeSet>
</databaseChangeLog>
\ No newline at end of file
......@@ -221,7 +221,8 @@
wes.org_code as orgCode,
wes.equipment_code as equipmentCode,
wes.warehouse_structure_id,
IF(substr(wes.equipment_code ,1,4) = '9204','true','false') as push3D
IF(substr(wes.equipment_code ,1,4) = '9204','true','false') as push3D,
wes.position
from
wl_equipment_specific wes
left join
......
......@@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.yeejoin.amos</groupId>
<artifactId>YeeAmosFireAutoSysRoot</artifactId>
<version>3.7.0.4</version>
<version>3.7.0.6</version>
<packaging>pom</packaging>
<name>YeeAmosFireAutoSysRoot</name>
......@@ -34,7 +34,7 @@
<dependency>
<groupId>com.yeejoin</groupId>
<artifactId>amos-component-rule</artifactId>
<version>1.7.8-SNAPSHOT</version>
<version>1.8.5-SNAPSHOT</version>
</dependency>
<dependency>
......
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