Commit a1e75e91 zshaohui

1.上抛中控问题 提交

1 个父辈 0a0627a0
package com.neotel.smfcore.custom.lizhen.kafka.bean;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class LastStatusInfo {
private String machineId;
private String errorCode;
private String errorText;
private long lastSaveTime = 0l;
}
......@@ -19,10 +19,7 @@ import com.neotel.smfcore.core.system.util.DevicesStatusUtil;
import com.neotel.smfcore.core.system.util.EquipStatusUtil;
import com.neotel.smfcore.custom.lizhen.innerBox.bean.StorageExport;
import com.neotel.smfcore.custom.lizhen.innerBox.util.StorageExportUtil;
import com.neotel.smfcore.custom.lizhen.kafka.bean.Heartbeat;
import com.neotel.smfcore.custom.lizhen.kafka.bean.MachineParameter;
import com.neotel.smfcore.custom.lizhen.kafka.bean.MachineParameterData;
import com.neotel.smfcore.custom.lizhen.kafka.bean.MachineStatus;
import com.neotel.smfcore.custom.lizhen.kafka.bean.*;
import com.neotel.smfcore.custom.lizhen.kafka.config.KafkaConfig;
import com.neotel.smfcore.custom.lizhen.kafka.config.StorageExportConfig;
import lombok.extern.slf4j.Slf4j;
......@@ -54,6 +51,8 @@ public class KafkaService {
Map<String, String> statusMap = Maps.newConcurrentMap();
Map<String, List<LastStatusInfo>> lastStatusInfoMap = Maps.newConcurrentMap();
/**
* 料仓---设备状态
......@@ -134,10 +133,13 @@ public class KafkaService {
status.setErrorCode(map.get("errorCode"));
status.setErrorMsg(map.get("msg"));
status.setCurrentStatus("3");
boolean hasSameStatus = hasSameStatus(status.getMachineID(), status.getErrorCode(), status.getErrorMsg());
if (!hasSameStatus){
String statusStr = JSON.toJSONString(status);
log.info("主题为:" + KafkaConfig.MACHINESTATUS_TOPIC + "内容为:" + statusStr);
ListenableFuture future = kafkaTemplate.send(KafkaConfig.MACHINESTATUS_TOPIC, statusStr);
//log.info("返回结果为:" + JSON.toJSONString(future));
updateLastStatus(status.getMachineID(),status.getErrorCode(),status.getErrorMsg());
}
}
} else {
if ("3".equals(currentStatus)){
......@@ -258,9 +260,6 @@ public class KafkaService {
}
//发送出料口信息
/**
* 发送出料口心跳
*/
......@@ -299,7 +298,7 @@ public class KafkaService {
/**
* 设备状态发送
* 出料口状态发送
*/
@Scheduled(fixedRate = 1000 * 10)
public void setStorageExportStatus() {
......@@ -341,10 +340,15 @@ public class KafkaService {
machineStatus.setErrorCode(equipMsg.getErrorCode());
machineStatus.setErrorMsg(equipMsg.getMsg());
machineStatus.setClientIP(statusBean.getClientIp());
boolean hasSameStatus = hasSameStatus(machineStatus.getMachineID(), machineStatus.getErrorCode(), machineStatus.getErrorMsg());
if (!hasSameStatus){
String statusStr = JSON.toJSONString(machineStatus);
log.info("出料口主题为:" + KafkaConfig.MACHINESTATUS_TOPIC + "内容为:" + statusStr);
ListenableFuture future = kafkaTemplate.send(KafkaConfig.MACHINESTATUS_TOPIC, statusStr);
log.info("出料口返回结果为:" + JSON.toJSONString(future));
updateLastStatus(machineStatus.getMachineID(),machineStatus.getErrorCode(),machineStatus.getErrorMsg());
}
}
} else {
MachineStatus machineStatus = new MachineStatus();
......@@ -367,9 +371,50 @@ public class KafkaService {
}
private void updateLastStatus(String machineId, String errorCode, String errorText) {
List<LastStatusInfo> lastStatusInfoList = lastStatusInfoMap.get(machineId);
if (lastStatusInfoList == null) {
lastStatusInfoList = new ArrayList<>();
}
boolean hasSameStatus = false;
for (LastStatusInfo lastStatusInfo : lastStatusInfoList) {
if (errorText.equals(lastStatusInfo.getErrorText())) {
//超过1个小时,重新统计
if (System.currentTimeMillis() - lastStatusInfo.getLastSaveTime() >= 1000 * 60 * 30) {
hasSameStatus = true;
break;
}
}
}
if (!hasSameStatus) {
LastStatusInfo lastStatusInfo = new LastStatusInfo(machineId, errorCode, errorText, System.currentTimeMillis());
lastStatusInfoList.add(lastStatusInfo);
}
//清理超过一个小时的
lastStatusInfoList = lastStatusInfoList.stream()
.filter(lastStatusInfo -> System.currentTimeMillis()- lastStatusInfo.getLastSaveTime() >= 1000 * 60 * 30)
.collect(Collectors.toList());
lastStatusInfoMap.put(machineId,lastStatusInfoList);
}
private boolean hasSameStatus(String machineId, String errorCode, String errorText) {
boolean hasSameStatus = false;
List<LastStatusInfo> lastStatusInfoList = lastStatusInfoMap.get(machineId);
if (lastStatusInfoList == null) {
lastStatusInfoList = new ArrayList<>();
}
for (LastStatusInfo lastStatusInfo : lastStatusInfoList) {
if (errorText.equals(lastStatusInfo.getErrorText())) {
//超过1个小时,重新统计
if (System.currentTimeMillis() - lastStatusInfo.getLastSaveTime() >= 1000 * 60 * 30) {
log.info(machineId+"的报错信息和上一次相同,跳过");
hasSameStatus = true;
break;
}
}
}
return hasSameStatus;
}
......
......@@ -40,7 +40,7 @@ public class DifferenceReelController {
List<LiteOrderItem> itemList = new ArrayList<>();
for (DifferentMaterial differentMaterial : differentMaterialList) {
String mo = differentMaterial.getMo();
String wo = differentMaterial.getWo();
String mc = differentMaterial.getMc();
String ipn = differentMaterial.getIpn();
if (StringUtils.isEmpty(ipn)){
......@@ -56,7 +56,7 @@ public class DifferenceReelController {
String side = gidLineSideS[2];
LiteOrderItem item = new LiteOrderItem();
item.setMo(mo);
item.setMo(wo);
item.setMachineName(mc);
item.setPn(ipn);
item.setStation(zone);
......
......@@ -13,7 +13,7 @@ public class DifferentMaterial {
* gidLineSide;//线_Line_面
*/
private String mo;
private String wo;
private String mc;
private String ipn;
private String zone;
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!