Commit 92c88642 authored by suhuiguang's avatar suhuiguang

1、预案代码修改

parent 76fc69a6
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.JSONObject;
import com.google.common.collect.Lists;
......@@ -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.mq.WebMqttComponent;
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.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.mapper.*;
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.IPreplanPictureDao;
......@@ -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.util.JexlUtil;
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.EquipmentSpecificIndexVo;
import com.yeejoin.amos.fas.business.vo.ReginParams;
import com.yeejoin.amos.fas.business.vo.Toke;
import com.yeejoin.amos.fas.business.vo.TopicEntityVo;
import com.yeejoin.amos.fas.client.invoke.RsDataQueue;
import com.yeejoin.amos.fas.common.enums.EquipmentRiskTypeEnum;
import com.yeejoin.amos.fas.common.enums.View3dRefreshAreaEum;
import com.yeejoin.amos.fas.dao.entity.ContingencyOriginalData;
import com.yeejoin.amos.fas.dao.entity.Equipment;
import com.yeejoin.amos.fas.dao.entity.EvaluationModel;
import com.yeejoin.amos.fas.dao.entity.Fmea;
import com.yeejoin.amos.fas.dao.entity.FmeaEquipmentPoint;
import com.yeejoin.amos.fas.dao.entity.FmeaPointInputitem;
import com.yeejoin.amos.fas.dao.entity.PreplanPicture;
import com.yeejoin.amos.fas.dao.entity.*;
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 java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @author keyong
......@@ -123,9 +103,6 @@ public class HandlerMqttMessageImpl implements IEquipmentHandlerService {
private FmeaEquipmentPointMapper fmeaEquipmentPointMapper;
@Autowired
private FireEquipMapper fireEquipMapper;
@Autowired
EquipmentSpecificMapper equipmentSpecificMapper;
@Autowired
......@@ -134,9 +111,6 @@ public class HandlerMqttMessageImpl implements IEquipmentHandlerService {
@Autowired
private IEvaluationModelDao iEvaluationModelDao;
@Autowired
private FmeaMapper fmeaMapper;
@Value("${station.name}")
private String stationName;
......@@ -156,38 +130,29 @@ public class HandlerMqttMessageImpl implements IEquipmentHandlerService {
deviceData.setMonitor(equipment != null ? equipment.getName() : "");
deviceData.setId(String.valueOf(equipmentSpecific.getId()));
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());
// 报警触发调用规则服务
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());
long equipId = 0;
if(StringUtil.isNotEmpty(equipment)) {
equipId = equipment.getId();
}
long specificIndexId = equipmentSpecificIndex.getId();
notifyAlarm(equipmentSpecificIndex, 1);
// 是否关联风险点
List<FmeaEquipmentPoint> list = fmeaEquipmentPointMapper.listFmeaByEquipIndexIdAndEquipId(specificIndexId, equipId);
if(list.size() > 0) {
// 关联风险点进行rpn,rpni值的修改
list.forEach(fmeaEqPoint -> {
long fmeaId = fmeaEqPoint.getFmeaId();
updateFmeaRpn(fmeaId);
});
} else {
// 没有关联风险点,三维页面消息推送
fireEquipRuleMessagePush(deviceData, toke);
final String stateTrue = "true";
final String stateFalse = "false";
String state = equipmentSpecificIndex.getValue();
if (stateTrue.equals(state)) {
//故障
notifyAlarm(equipmentSpecificIndex, 1);
} else if (stateFalse.equals(state)) {
//故障恢复
notifyAlarm(equipmentSpecificIndex, 0);
}
} else { // 向三维推送实时值修改
//三维页面消息推送
fireEquipRuleMessagePush(deviceData, toke);
} else {
// 监测数据逻辑
log.info("(监测)Message type is: " + equipmentSpecificIndex.getType());
// 是否关联风险点
notifyAlarm(equipmentSpecificIndex, 0);
Map<String, Object> content = new HashMap<>();
content.put("id", "id");
content.put("label", "eqPointName");
......@@ -198,29 +163,8 @@ public class HandlerMqttMessageImpl implements IEquipmentHandlerService {
String title = String.format("/%s/%s/%s", serviceName, stationName,"data/refresh/monitorData");
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
public void subscribeTopic() {
// 若登录系统则订阅装备数据
......@@ -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>
* @Description: 设备消息规则推送
......@@ -295,18 +198,7 @@ public class HandlerMqttMessageImpl implements IEquipmentHandlerService {
*/
@Async
void fireEquipRuleMessagePush(AlarmParam deviceData, Toke toke) {
String bacthNo = UUID.randomUUID().toString();
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);
}
RiskSourceServiceImpl.ruleMsgSend(deviceData, toke, log, ruleTrigger);
}
/**
......@@ -329,7 +221,6 @@ public class HandlerMqttMessageImpl implements IEquipmentHandlerService {
ids.add(fmeaEquipmentPoint.getId());
fmeaIds.add(fmeaEquipmentPoint.getFmeaId());
});
if (ids.size() > 0) {
fmeaEquipmentPointMapper.updateStateByIds(state, ids);
}
......
......@@ -90,10 +90,6 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
private static final String DATETYPE_YYYY = "yyyy";//年
private static final String TOKE = "TOKE";
private static CacheMap cacheMap = CacheFactory.newChacheMap();
@Autowired
private IRiskSourceDao iRiskSourceDao;
......@@ -177,9 +173,6 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
private IRiskFactorDao iRiskFactorDao;
@Autowired
private IEquipManageFeign equipManageFeign;
@Autowired
protected HttpServletRequest request;
@Autowired
......@@ -1053,10 +1046,8 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
if (equipment != null) {
deviceData.setMonitor(equipment.getName());
deviceData.setEquimentId(String.valueOf(equipment.getId()));
List<RiskSource> riskSources = this.riskSourceMapper.queryByFireEqument(deviceData.getFireEquimentId());
//asymbleWithParent(batchNo, riskSources, FireEquimentDataRo.class.getSimpleName(), deviceData.getFireEquimentId(), deviceData.getNodeState(), null, null);
try {
alermContingency(deviceData.getBatchNo(), fireEquipment, equipment);
} catch (Exception e) {
......@@ -1072,7 +1063,10 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
*/
@Async
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();
FireEquimentDataRo fireEquimentDataRo = new FireEquimentDataRo();
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