Commit 92c88642 authored by suhuiguang's avatar suhuiguang

1、预案代码修改

parent 76fc69a6
package com.yeejoin.amos.fas.business.service.impl; package com.yeejoin.amos.fas.business.service.impl;
import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.apache.commons.lang3.ArrayUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
...@@ -33,13 +10,7 @@ import com.yeejoin.amos.fas.business.action.model.FireEquimentDataRo; ...@@ -33,13 +10,7 @@ import com.yeejoin.amos.fas.business.action.model.FireEquimentDataRo;
import com.yeejoin.amos.fas.business.action.model.SetpEnum; import com.yeejoin.amos.fas.business.action.model.SetpEnum;
import com.yeejoin.amos.fas.business.action.mq.WebMqttComponent; import com.yeejoin.amos.fas.business.action.mq.WebMqttComponent;
import com.yeejoin.amos.fas.business.action.mq.WebMqttSubscribe; import com.yeejoin.amos.fas.business.action.mq.WebMqttSubscribe;
import com.yeejoin.amos.fas.business.dao.mapper.EquipmentSpecificMapper; import com.yeejoin.amos.fas.business.dao.mapper.*;
import com.yeejoin.amos.fas.business.dao.mapper.FireEquipMapper;
import com.yeejoin.amos.fas.business.dao.mapper.FireEquipPointMapper;
import com.yeejoin.amos.fas.business.dao.mapper.FmeaEquipmentPointMapper;
import com.yeejoin.amos.fas.business.dao.mapper.FmeaMapper;
import com.yeejoin.amos.fas.business.dao.mapper.FmeaPointInputitemMapper;
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.repository.IContingencyOriginalDataDao;
import com.yeejoin.amos.fas.business.dao.repository.IEvaluationModelDao; import com.yeejoin.amos.fas.business.dao.repository.IEvaluationModelDao;
import com.yeejoin.amos.fas.business.dao.repository.IPreplanPictureDao; import com.yeejoin.amos.fas.business.dao.repository.IPreplanPictureDao;
...@@ -50,22 +21,31 @@ import com.yeejoin.amos.fas.business.service.intfc.IEquipmentHandlerService; ...@@ -50,22 +21,31 @@ import com.yeejoin.amos.fas.business.service.intfc.IEquipmentHandlerService;
import com.yeejoin.amos.fas.business.service.intfc.IView3dService; import com.yeejoin.amos.fas.business.service.intfc.IView3dService;
import com.yeejoin.amos.fas.business.util.JexlUtil; import com.yeejoin.amos.fas.business.util.JexlUtil;
import com.yeejoin.amos.fas.business.util.RpnUtils; import com.yeejoin.amos.fas.business.util.RpnUtils;
import com.yeejoin.amos.fas.business.util.StringUtil;
import com.yeejoin.amos.fas.business.vo.EquipmentSpecificForRiskVo; import com.yeejoin.amos.fas.business.vo.EquipmentSpecificForRiskVo;
import com.yeejoin.amos.fas.business.vo.EquipmentSpecificIndexVo; import com.yeejoin.amos.fas.business.vo.EquipmentSpecificIndexVo;
import com.yeejoin.amos.fas.business.vo.ReginParams;
import com.yeejoin.amos.fas.business.vo.Toke; import com.yeejoin.amos.fas.business.vo.Toke;
import com.yeejoin.amos.fas.business.vo.TopicEntityVo; import com.yeejoin.amos.fas.business.vo.TopicEntityVo;
import com.yeejoin.amos.fas.client.invoke.RsDataQueue; import com.yeejoin.amos.fas.client.invoke.RsDataQueue;
import com.yeejoin.amos.fas.common.enums.EquipmentRiskTypeEnum; import com.yeejoin.amos.fas.common.enums.EquipmentRiskTypeEnum;
import com.yeejoin.amos.fas.common.enums.View3dRefreshAreaEum; import com.yeejoin.amos.fas.common.enums.View3dRefreshAreaEum;
import com.yeejoin.amos.fas.dao.entity.ContingencyOriginalData; import com.yeejoin.amos.fas.dao.entity.*;
import com.yeejoin.amos.fas.dao.entity.Equipment; import org.apache.commons.lang3.ArrayUtils;
import com.yeejoin.amos.fas.dao.entity.EvaluationModel; import org.slf4j.Logger;
import com.yeejoin.amos.fas.dao.entity.Fmea; import org.slf4j.LoggerFactory;
import com.yeejoin.amos.fas.dao.entity.FmeaEquipmentPoint; import org.springframework.beans.BeanUtils;
import com.yeejoin.amos.fas.dao.entity.FmeaPointInputitem; import org.springframework.beans.factory.annotation.Autowired;
import com.yeejoin.amos.fas.dao.entity.PreplanPicture; import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/** /**
* @author keyong * @author keyong
...@@ -123,9 +103,6 @@ public class HandlerMqttMessageImpl implements IEquipmentHandlerService { ...@@ -123,9 +103,6 @@ public class HandlerMqttMessageImpl implements IEquipmentHandlerService {
private FmeaEquipmentPointMapper fmeaEquipmentPointMapper; private FmeaEquipmentPointMapper fmeaEquipmentPointMapper;
@Autowired @Autowired
private FireEquipMapper fireEquipMapper;
@Autowired
EquipmentSpecificMapper equipmentSpecificMapper; EquipmentSpecificMapper equipmentSpecificMapper;
@Autowired @Autowired
...@@ -134,9 +111,6 @@ public class HandlerMqttMessageImpl implements IEquipmentHandlerService { ...@@ -134,9 +111,6 @@ public class HandlerMqttMessageImpl implements IEquipmentHandlerService {
@Autowired @Autowired
private IEvaluationModelDao iEvaluationModelDao; private IEvaluationModelDao iEvaluationModelDao;
@Autowired
private FmeaMapper fmeaMapper;
@Value("${station.name}") @Value("${station.name}")
private String stationName; private String stationName;
...@@ -156,38 +130,29 @@ public class HandlerMqttMessageImpl implements IEquipmentHandlerService { ...@@ -156,38 +130,29 @@ public class HandlerMqttMessageImpl implements IEquipmentHandlerService {
deviceData.setMonitor(equipment != null ? equipment.getName() : ""); deviceData.setMonitor(equipment != null ? equipment.getName() : "");
deviceData.setId(String.valueOf(equipmentSpecific.getId())); deviceData.setId(String.valueOf(equipmentSpecific.getId()));
deviceData.setCode(equipmentSpecific.getCode()); deviceData.setCode(equipmentSpecific.getCode());
if (EquipmentRiskTypeEnum.HZGJ.getCode().equals(equipmentSpecificIndex.getType())) { //设备告警处理逻辑 //设备告警处理逻辑
if (EquipmentRiskTypeEnum.HZGJ.getCode().equals(equipmentSpecificIndex.getType())) {
log.info("(报警)Message type is: " + equipmentSpecificIndex.getType()); log.info("(报警)Message type is: " + equipmentSpecificIndex.getType());
// 报警触发调用规则服务 // 报警触发调用规则服务
executeDynamicPlan(deviceData, equipment, equipmentSpecific, toke); executeDynamicPlan(deviceData, equipment, equipmentSpecific, toke);
} else if (EquipmentRiskTypeEnum.GZ.getCode().equals(equipmentSpecificIndex.getType())) {
} else if (EquipmentRiskTypeEnum.GZ.getCode().equals(equipmentSpecificIndex.getType())) { // 设备故障处理逻辑 // 设备故障处理逻辑
log.info("(故障)Message type is: " + equipmentSpecificIndex.getType()); log.info("(故障)Message type is: " + equipmentSpecificIndex.getType());
long equipId = 0; final String stateTrue = "true";
if(StringUtil.isNotEmpty(equipment)) { final String stateFalse = "false";
equipId = equipment.getId(); String state = equipmentSpecificIndex.getValue();
} if (stateTrue.equals(state)) {
long specificIndexId = equipmentSpecificIndex.getId(); //故障
notifyAlarm(equipmentSpecificIndex, 1); notifyAlarm(equipmentSpecificIndex, 1);
} else if (stateFalse.equals(state)) {
// 是否关联风险点 //故障恢复
List<FmeaEquipmentPoint> list = fmeaEquipmentPointMapper.listFmeaByEquipIndexIdAndEquipId(specificIndexId, equipId); notifyAlarm(equipmentSpecificIndex, 0);
if(list.size() > 0) {
// 关联风险点进行rpn,rpni值的修改
list.forEach(fmeaEqPoint -> {
long fmeaId = fmeaEqPoint.getFmeaId();
updateFmeaRpn(fmeaId);
});
} else {
// 没有关联风险点,三维页面消息推送
fireEquipRuleMessagePush(deviceData, toke);
} }
//三维页面消息推送
} else { // 向三维推送实时值修改 fireEquipRuleMessagePush(deviceData, toke);
} else {
// 监测数据逻辑
log.info("(监测)Message type is: " + equipmentSpecificIndex.getType()); log.info("(监测)Message type is: " + equipmentSpecificIndex.getType());
// 是否关联风险点
notifyAlarm(equipmentSpecificIndex, 0);
Map<String, Object> content = new HashMap<>(); Map<String, Object> content = new HashMap<>();
content.put("id", "id"); content.put("id", "id");
content.put("label", "eqPointName"); content.put("label", "eqPointName");
...@@ -198,29 +163,8 @@ public class HandlerMqttMessageImpl implements IEquipmentHandlerService { ...@@ -198,29 +163,8 @@ public class HandlerMqttMessageImpl implements IEquipmentHandlerService {
String title = String.format("/%s/%s/%s", serviceName, stationName,"data/refresh/monitorData"); String title = String.format("/%s/%s/%s", serviceName, stationName,"data/refresh/monitorData");
webMqttComponent.publish(title, JSON.toJSONString(view3dService.getEquipStatusList(equipmentSpecific.getOrgCode()))); webMqttComponent.publish(title, JSON.toJSONString(view3dService.getEquipStatusList(equipmentSpecific.getOrgCode())));
} }
} }
// @Override
// public void subscribeTopic(ReginParams reginParams) {
// // 若登录系统则订阅装备数据
// webMqttSubscribe.adapter.removeTopic(defaultTopic);
// String orgCode = reginParams.getCompany().getOrgCode();
// String topic = String.format("%s.%s%s", serverName, "equipment", "/#");
// String[] strs = webMqttSubscribe.adapter.getTopic();
// List<String> list = Stream.of(strs).collect(Collectors.toList());
// if(list.size() > 0) {
// list.forEach(x -> {
// if(!(x.equals(topic))) {
// webMqttSubscribe.adapter.addTopic(topic);
// }
// });
// } else {
// webMqttSubscribe.adapter.addTopic(topic);
// }
//
// }
@Override @Override
public void subscribeTopic() { public void subscribeTopic() {
// 若登录系统则订阅装备数据 // 若登录系统则订阅装备数据
...@@ -240,47 +184,6 @@ public class HandlerMqttMessageImpl implements IEquipmentHandlerService { ...@@ -240,47 +184,6 @@ public class HandlerMqttMessageImpl implements IEquipmentHandlerService {
} }
/**
* <pre>
* @Description: rpn,rpni值修改
* </pre>
*
* @MethodName:
* @Param: [fmeaId]
* @Return: void
* @Throws
* @Author keyong
* @Date 2020/11/16 18:26
*/
public void updateFmeaRpn(long fmeaId) {
Fmea fmea = fmeaMapper.getById(fmeaId);
BigDecimal oidValue = new BigDecimal(fmea.getOidValue());
BigDecimal sidValue = new BigDecimal(fmea.getSidValue());
BigDecimal didValue = new BigDecimal(fmea.getDidValue());
// 计算rpni
BigDecimal rpni = oidValue.multiply(sidValue).multiply(didValue).setScale(2, BigDecimal.ROUND_HALF_UP);
BigDecimal rpn;
if (fmea.getNewEvaluationOid() == null) {
EvaluationModel evaluationModel = this.getEvaluationModel(fmeaId);
if (evaluationModel != null) { // 已经绑定点位或者巡检点项且匹配到风险模型,则更新为计算后的结果
BigDecimal newOidValue = new BigDecimal(evaluationModel.getCoefficient());
rpn = newOidValue.multiply(sidValue).multiply(didValue).setScale(2, BigDecimal.ROUND_HALF_UP);
fmea.setNewEvaluationOid(evaluationModel.getId());
} else { // 未绑定点位或者巡检点项或者匹配不到风险模型,则更新为rpn与rpni一致
fmea.setNewEvaluationOid(fmea.getEvaluationOid());
rpn = rpni;
}
} else {
BigDecimal newOidValue = new BigDecimal(fmea.getNewOidValue());
rpn = newOidValue.multiply(sidValue).multiply(didValue).setScale(2, BigDecimal.ROUND_HALF_UP);
}
fmea.setRpni(rpni);
fmea.setRpn(rpn);
// 更新fmea
fmeaMapper.updateRpn(fmea);
}
/** /**
* <pre> * <pre>
* @Description: 设备消息规则推送 * @Description: 设备消息规则推送
...@@ -295,18 +198,7 @@ public class HandlerMqttMessageImpl implements IEquipmentHandlerService { ...@@ -295,18 +198,7 @@ public class HandlerMqttMessageImpl implements IEquipmentHandlerService {
*/ */
@Async @Async
void fireEquipRuleMessagePush(AlarmParam deviceData, Toke toke) { void fireEquipRuleMessagePush(AlarmParam deviceData, Toke toke) {
String bacthNo = UUID.randomUUID().toString(); RiskSourceServiceImpl.ruleMsgSend(deviceData, toke, log, ruleTrigger);
FireEquimentDataRo fireEquimentDataRo = new FireEquimentDataRo();
deviceData.setBatchNo(bacthNo);
BeanUtils.copyProperties(deviceData, fireEquimentDataRo);
try {
RequestContext.setToken(toke.getToke());
RequestContext.setProduct(toke.getProduct());
log.info("设备消息规则推送" + JSONObject.toJSONString(deviceData));
ruleTrigger.publish(fireEquimentDataRo, "风险管控/fireEquiment", null);
} catch (Exception e) {
log.error(e.getMessage(),e);
}
} }
/** /**
...@@ -329,7 +221,6 @@ public class HandlerMqttMessageImpl implements IEquipmentHandlerService { ...@@ -329,7 +221,6 @@ public class HandlerMqttMessageImpl implements IEquipmentHandlerService {
ids.add(fmeaEquipmentPoint.getId()); ids.add(fmeaEquipmentPoint.getId());
fmeaIds.add(fmeaEquipmentPoint.getFmeaId()); fmeaIds.add(fmeaEquipmentPoint.getFmeaId());
}); });
if (ids.size() > 0) { if (ids.size() > 0) {
fmeaEquipmentPointMapper.updateStateByIds(state, ids); fmeaEquipmentPointMapper.updateStateByIds(state, ids);
} }
......
...@@ -90,10 +90,6 @@ public class RiskSourceServiceImpl implements IRiskSourceService { ...@@ -90,10 +90,6 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
private static final String DATETYPE_YYYY = "yyyy";//年 private static final String DATETYPE_YYYY = "yyyy";//年
private static final String TOKE = "TOKE";
private static CacheMap cacheMap = CacheFactory.newChacheMap();
@Autowired @Autowired
private IRiskSourceDao iRiskSourceDao; private IRiskSourceDao iRiskSourceDao;
...@@ -177,9 +173,6 @@ public class RiskSourceServiceImpl implements IRiskSourceService { ...@@ -177,9 +173,6 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
private IRiskFactorDao iRiskFactorDao; private IRiskFactorDao iRiskFactorDao;
@Autowired @Autowired
private IEquipManageFeign equipManageFeign;
@Autowired
protected HttpServletRequest request; protected HttpServletRequest request;
@Autowired @Autowired
...@@ -1053,10 +1046,8 @@ public class RiskSourceServiceImpl implements IRiskSourceService { ...@@ -1053,10 +1046,8 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
if (equipment != null) { if (equipment != null) {
deviceData.setMonitor(equipment.getName()); deviceData.setMonitor(equipment.getName());
deviceData.setEquimentId(String.valueOf(equipment.getId())); deviceData.setEquimentId(String.valueOf(equipment.getId()));
List<RiskSource> riskSources = this.riskSourceMapper.queryByFireEqument(deviceData.getFireEquimentId()); List<RiskSource> riskSources = this.riskSourceMapper.queryByFireEqument(deviceData.getFireEquimentId());
//asymbleWithParent(batchNo, riskSources, FireEquimentDataRo.class.getSimpleName(), deviceData.getFireEquimentId(), deviceData.getNodeState(), null, null); //asymbleWithParent(batchNo, riskSources, FireEquimentDataRo.class.getSimpleName(), deviceData.getFireEquimentId(), deviceData.getNodeState(), null, null);
try { try {
alermContingency(deviceData.getBatchNo(), fireEquipment, equipment); alermContingency(deviceData.getBatchNo(), fireEquipment, equipment);
} catch (Exception e) { } catch (Exception e) {
...@@ -1072,7 +1063,10 @@ public class RiskSourceServiceImpl implements IRiskSourceService { ...@@ -1072,7 +1063,10 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
*/ */
@Async @Async
void fireEquipRuleMessagePush(AlarmParam deviceData, Toke toke) { void fireEquipRuleMessagePush(AlarmParam deviceData, Toke toke) {
ruleMsgSend(deviceData, toke, log, ruleTrigger);
}
static void ruleMsgSend(AlarmParam deviceData, Toke toke, Logger log, RuleTrigger ruleTrigger) {
String bacthNo = UUID.randomUUID().toString(); String bacthNo = UUID.randomUUID().toString();
FireEquimentDataRo fireEquimentDataRo = new FireEquimentDataRo(); FireEquimentDataRo fireEquimentDataRo = new FireEquimentDataRo();
deviceData.setBatchNo(bacthNo); deviceData.setBatchNo(bacthNo);
......
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