Commit 5af9b1ad authored by suhuiguang's avatar suhuiguang

1.修改缺陷703

重新评价危险因素,确定RPNr值时,需要查询关联的巡检点或者设备是否有报警, 如果有报警或巡检不合格,则根据报警指标值计算Or、RPNr 后保存。 如果无报警和巡检不合格,则默认Or、RPNr的值为Oi,RPNi的值
parent 02d97a0b
......@@ -31,6 +31,7 @@ import com.yeejoin.amos.fas.business.util.JexlUtil;
import com.yeejoin.amos.fas.business.util.RpnUtils;
import com.yeejoin.amos.fas.business.vo.EquipCommunicationData;
import com.yeejoin.amos.fas.client.invoke.RsDataQueue;
import com.yeejoin.amos.fas.common.enums.CheckStatusEnum;
import com.yeejoin.amos.fas.common.enums.DataRefreshTypeEum;
import com.yeejoin.amos.fas.common.enums.View3dRefreshAreaEum;
import com.yeejoin.amos.fas.core.common.request.CommonPageable;
......@@ -361,6 +362,8 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
Equipment equipment = equipmentService.queryOne(importantEquipId);
if (!CollectionUtils.isEmpty(returnList) && equipment != null) {
fmeaEquipmentPointMapper.saveBatch(returnList);
}
if(equipment != null){
RsDataQueue rsDataQueue = RsDataQueue.getInstance();
rsDataQueue.addEquipmentMessage(fmeaId,equipment.getName());
}
......@@ -383,9 +386,9 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
}
if (!CollectionUtils.isEmpty(returnList)) {
fmeaPointInputitemMapper.saveBatch(returnList);
RsDataQueue rsDataQueue = RsDataQueue.getInstance();
rsDataQueue.addPatrolMessage(fmeaId);
}
RsDataQueue rsDataQueue = RsDataQueue.getInstance();
rsDataQueue.addPatrolMessage(fmeaId);
return returnList;
}
......@@ -554,12 +557,12 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
}
for(int i=0;i<content.size();i++){
if(content.get(i).get("userId") !=null && userMap.containsKey(content.get(i).get("userId"))){
if(StringUtil.isNotEmpty(content.get(i).get("userId")) && userMap.containsKey(content.get(i).get("userId"))){
AgencyUserModel user = userMap.get(content.get(i).get("userId"));
content.get(i).put("userName", user.getRealName());
content.get(i).put("tel", user.getMobile());
}
if(content.get(i).get("deptId") !=null && deptMap.containsKey(Long.valueOf(content.get(i).get("deptId").toString()))){
if(StringUtil.isNotEmpty(content.get(i).get("deptId")) && deptMap.containsKey(Long.valueOf(content.get(i).get("deptId").toString()))){
content.get(i).put("deptName", deptMap.get(Long.valueOf(content.get(i).get("deptId").toString())));
}
}
......@@ -628,7 +631,7 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
* @param protalData
*/
@Async
private void protalRuleMessagePush(ProtalDataRo protalData){
void protalRuleMessagePush(ProtalDataRo protalData){
String bacthNo = UUID.randomUUID().toString();
protalData.setBatchNo(bacthNo);
protalData.setOriginalNodeState(protalData.getNodeState());
......@@ -1116,18 +1119,24 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
BigDecimal sidValue = new BigDecimal(fmea.getSidValue());
BigDecimal didValue = new BigDecimal(fmea.getDidValue());
//1.1计算rpni
BigDecimal rpni = oidValue.multiply(sidValue).multiply(didValue).setScale(2, BigDecimal.ROUND_HALF_UP);
BigDecimal rpn;
//1.2计算rpn:为空则rpni = rpn;不为空则重新计算s*d*newo
//未评价过,计算绑定的巡检点项 设备点位故障率
if (fmea.getNewEvaluationOid() == null) {
fmea.setNewEvaluationOid(fmea.getEvaluationOid());
rpn = rpni;
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);
}
List<RiskLevel> levels = riskLevelDao.findAll();
RiskLevel newLevel = RpnUtils.getBetweenLevel(rpn, levels);
......@@ -1344,11 +1353,13 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
//3.更新父节点rpn、rpni、风险等级
this.updateParentRpn(riskSource.getParentId());
//4.极光推送给手机客户端
if(notifyType=="recovery"||notifyType=="fmeaUpdate"||(notifyType=="alarm"&&rpnDiffer>0)||(notifyType=="patrol"&&rpnDiffer>0&&checkStatus.equals("不合格")))
jpushRiskSourceMessage(jpushMsgBo);
//5.规则告警(消息)TODO
if(notifyType=="recovery"||notifyType=="fmeaUpdate"||(notifyType=="alarm"&&rpnDiffer>0)||(notifyType=="patrol"&&rpnDiffer>0&&checkStatus.equals("不合格")))
if("recovery".equals(notifyType) || "fmeaUpdate".equals(notifyType) || ("alarm".equals(notifyType)&&rpnDiffer>0)||("patrol".equals(notifyType) && rpnDiffer>0 && CheckStatusEnum.UNQUALIFIED.getName().equals(checkStatus))){
jpushRiskSourceMessage(jpushMsgBo);
}
//5.规则告警(消息)
if("recovery".equals(notifyType) || "fmeaUpdate".equals(notifyType) || ("alarm".equals(notifyType)&&rpnDiffer>0) ||(notifyType=="patrol" && rpnDiffer>0 && CheckStatusEnum.UNQUALIFIED.getName().equals(checkStatus))){
notifyRule(riskSourceId, rpn, rpni, notifyType,changeType, jpushMsgBo.getMsg());
}
//6.通知全景监控屏幕数据刷新
iDataRefreshService.refreshViewData(DataRefreshTypeEum.rpn.getCode());
}
......@@ -1516,4 +1527,18 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
public void batchSaveRegionUe4(List<BindRegionBo> regionBoList) {
riskSourceMapper.batchSaveRegionUe4(regionBoList);
}
private EvaluationModel getEvaluationModel(Long fmeaId){
List<FmeaEquipmentPoint> equipmentPoints = fmeaEquipmentPointMapper.listFmeaByFmeaId(fmeaId);
List<FmeaPointInputitem> pointInputitems = fmeaPointInputitemMapper.listFmeaByFmeaId(fmeaId);
Double maxRate = RpnUtils.getMaxRate(equipmentPoints, pointInputitems);
if(maxRate != null){
List<EvaluationModel> oModels = iEvaluationModelDao.findAllByType("O");
EvaluationModel oEvaluationModel = getBetweenModel(maxRate, oModels);
return oEvaluationModel;
}
return null;
}
}
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