Commit 5753fa92 LN

设备互联功能

1 个父辈 37215eb9
package com.neotel.smfcore.core.equipment.bean;
import cn.hutool.core.util.ObjectUtil;
import com.neotel.smfcore.core.language.util.MessageUtils;
import lombok.Data;
import lombok.ToString;
import java.util.Locale;
@ToString
@Data
public class EquipMsg {
......@@ -27,4 +31,18 @@ public class EquipMsg {
* 参数
*/
private String[] msgParams;
public String getShowMsg(Locale locale) {
//提示信息国际化
if (ObjectUtil.isEmpty(getMsgCode())) {
return this.msg;
} else {
String code = this.msgCode;
if (!code.startsWith(MessageUtils.smfcore)) {
code = MessageUtils.smfcore + "." + this.msgCode;
}
String newMsg = MessageUtils.getText(code, getMsgParams(), locale, getMsg());
return newMsg;
}
}
}
......@@ -2,6 +2,7 @@ package com.neotel.smfcore.core.equipment.bean;
import com.google.common.base.Strings;
import com.neotel.smfcore.core.equipment.enums.EquipmentType;
import com.neotel.smfcore.core.message.enums.MessageType;
import lombok.Data;
import lombok.ToString;
......@@ -20,7 +21,7 @@ public class EquipStatusBean implements Serializable {
*/
private String type = EquipmentType.AUTO.name();
/**
* 设备状态
* 设备状态 0=离线,1=正常运行中, 2=急停
*/
private int status;
/**
......@@ -94,4 +95,14 @@ public class EquipStatusBean implements Serializable {
data.put(key, valueStr);
}
public EquipMsg getMsgByType(String type){
for (EquipMsg msg : getMsgList()){
if(msg.getType().equals(type)){
return msg;
}
}
return null;
}
}
package com.neotel.smfcore.core.equipment.handler.impl;
import cn.hutool.core.util.ObjectUtil;
import com.neotel.smfcore.core.equipment.bean.EquipMsg;
import com.neotel.smfcore.core.equipment.bean.EquipStatusBean;
import com.neotel.smfcore.core.equipment.enums.EquipmentType;
import com.neotel.smfcore.core.equipment.handler.IEquipmentHandler;
......@@ -28,15 +30,39 @@ public class BaseEquipHandler implements IEquipmentHandler {
try {
//判断是否刚刚上线
EquipStatusBean bean = EquipStatusUtil.getStatusBean(statusBean.getCid());
if (bean == null) {
EquipStatusBean preBean = EquipStatusUtil.getStatusBean(statusBean.getCid());
if (preBean == null) {
DeviceMessageUtil.addOnlineMessage(statusBean.getCid(), "", statusBean.getClientIp());
// EquipStatusUtil.updateClientMsg(statusBean.getCid(), "", "", "", null);
} else if (bean.timeOut() && (bean.getOfflineTime() > -1)) {
} else if (preBean.timeOut() && (preBean.getOfflineTime() > -1)) {
DeviceMessageUtil.addOnlineMessage(statusBean.getCid(), "", statusBean.getClientIp());
// EquipStatusUtil.updateClientMsg(statusBean.getCid(), "", "", "", null);
}
//记录提示信息
if(statusBean.getMsgList()!=null){
for (EquipMsg msg :
statusBean.getMsgList()) {
//判断是否有内容
//判断消息是否有内容
if(ObjectUtil.isNotEmpty(msg.getMsg())||ObjectUtil.isNotEmpty(msg.getMsgCode())){
boolean newMsg=true;
//和上个消息是否一样
if(preBean!=null){
EquipMsg preMsg=preBean.getMsgByType(msg.getType());
if(preMsg!=null){
if(msg.getMsgCode().equals(preMsg.getMsgCode())&&msg.getMsg().equals(preMsg.getMsg())){
newMsg=false;
}
}
}
if(newMsg){
DeviceMessageUtil.addDeviceMessage(statusBean.getCid(),msg.getType(),msg.getModule(),msg.getMsgCode(),msg.getMsg(),msg.getMsgParams());
}
}
}
}
EquipStatusUtil.updateStatusBean(statusBean);
// }
......
package com.neotel.smfcore.core.equipment.rest;
import com.neotel.smfcore.core.device.util.EquipmentCache;
import com.neotel.smfcore.core.equipment.bean.EquipMsg;
import com.neotel.smfcore.core.equipment.bean.EquipStatusBean;
import com.neotel.smfcore.core.equipment.bean.EquipStatusDto;
import com.neotel.smfcore.core.equipment.service.po.Equipment; ;
import com.neotel.smfcore.core.message.enums.MessageType;
import com.neotel.smfcore.core.system.util.EquipStatusUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
......@@ -16,6 +20,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Map;
......@@ -34,11 +39,27 @@ public class EquipViewController {
@PreAuthorize("@el.check('equipmentView:info')")
public List<EquipStatusDto> info(HttpServletRequest servletRequest) {
Locale locale=servletRequest.getLocale();
List<EquipStatusDto> resultList=new ArrayList<>();
Map<String,Equipment> allEquipList= equipmentCache.getAllEquipment();
for (Equipment equip :
allEquipList.values()) {
EquipStatusDto dto=new EquipStatusDto(equip.getId(),equip.getName(),equip.getCid(),false,0,"",equip.getType());
EquipStatusBean bean= EquipStatusUtil.getStatusBean(equip.getCid());
if(bean!=null){
if(bean.timeOut()){
dto.setOnLine(false);
}else{
dto.setOnLine(true);
if(bean.getMsgList()!=null){
for (EquipMsg msg : bean.getMsgList()){
if(msg.getType().equals(MessageType.ERROR.name())){
dto.setMsg(msg.getShowMsg(locale));
}
}
}
}
}
resultList.add(dto);
}
return resultList;
......
......@@ -27,6 +27,10 @@ public class Message extends BasePo implements Serializable {
Message message=new Message(deviceName,deviceId,module, type.name(),msgCode,msg,msgParams,null,null,"");
return message;
}
public static Message newMsg(String type,String deviceName,String deviceId,String module,String msgCode,String msg,String[] msgParams){
Message message=new Message(deviceName,deviceId,module, type,msgCode,msg,msgParams,null,null,"");
return message;
}
/**
* 设备名称
*/
......
......@@ -52,7 +52,7 @@ public class DeviceMessageUtil {
}
public static void addErrorMessage(String cid, String moudle, String msgCode, String msg, String[] msgParam) {
public static void addDeviceMessage(String cid,String msgType, String moudle, String msgCode, String msg, String[] msgParam) {
Storage storage = dataCache.getStorage(cid);
if (storage != null) {
String code=msgCode;
......
......@@ -3,6 +3,7 @@ package com.neotel.smfcore.core.system.util;
import cn.hutool.core.util.ObjectUtil;
import com.google.common.collect.Maps;
import com.neotel.smfcore.core.device.bean.StatusBean;
import com.neotel.smfcore.core.message.enums.MessageType;
import com.neotel.smfcore.core.message.util.DeviceMessageUtil;
import lombok.extern.slf4j.Slf4j;
......@@ -71,7 +72,7 @@ public class DevicesStatusUtil {
}
}
if(newMsg){
DeviceMessageUtil.addErrorMessage(cid,"",msgCode,clientMsg,msgParam);
DeviceMessageUtil.addDeviceMessage(cid, MessageType.ERROR.name(),"",msgCode,clientMsg,msgParam);
}
}
......
......@@ -34,4 +34,4 @@ rsa:
app:
version: '@project.version@'
\ No newline at end of file
version: '1.23.0211'
\ No newline at end of file
......@@ -251,6 +251,8 @@ smfcore.safetyInventory.stockReel=\u5E93\u5B58\u76D8\u6570
smfcore.safetyInventory.supplementReel=\u8865\u5145\u76D8\u6570
smfcore.safetyInventory.amount=\u6700\u5C0F\u5305\u88C5
smfcore.component.storeError=\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u5E93\u5B58\uFF0C\u6700\u5C0F\u5E93\u5B58<=\u5B89\u5168\u5E93\u5B58<=\u6700\u5927\u5E93\u5B58
smfcore.equipmentView=\u8BBE\u5907\u4E92\u8054
#smfclient.nlp.onlyOneTray=\u4E0D\u53EF\u540C\u65F6\u653E\u5165\u591A\u76D8\u7269\u6599:{0}
#smfclient.nlp.cannotFindPos={0}\u672A\u627E\u5230\u5E93\u4F4D:{1}
#smfclient.nlp.inputOk={0}\u5165\u5E93\u5230{1}\u6210\u529F
......
......@@ -252,4 +252,5 @@ smfcore.safetyInventory.stockReel=Reel QTY
smfcore.safetyInventory.supplementReel=Number of additional plates
smfcore.safetyInventory.amount=Amount
smfcore.component.storeError=Please enter the correct stock, minimum stock <= safety stock <= maximum stock
smfcore.equipmentView=Equipment connected
......@@ -251,4 +251,5 @@ smfcore.safetyInventory.stockReel=\u76E4\u6578
smfcore.safetyInventory.supplementReel=\u8FFD\u52A0\u30D7\u30EC\u30FC\u30C8\u679A\u6570
smfcore.safetyInventory.amount=\u6578\u91CF
smfcore.component.storeError=\u6B63\u3057\u3044\u5728\u5EAB\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3001\u6700\u5C0F\u5728\u5EAB\u2266\u5B89\u5168\u5728\u5EAB\u2266\u6700\u5927\u5728\u5EAB
smfcore.equipmentView=\u8BBE\u5907\u4E92\u8054
......@@ -251,3 +251,4 @@ smfcore.safetyInventory.stockReel=\u5E93\u5B58\u76D8\u6570
smfcore.safetyInventory.supplementReel=\u8865\u5145\u76D8\u6570
smfcore.safetyInventory.amount=\u6700\u5C0F\u5305\u88C5
smfcore.component.storeError=\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u5E93\u5B58\uFF0C\u6700\u5C0F\u5E93\u5B58<=\u5B89\u5168\u5E93\u5B58<=\u6700\u5927\u5E93\u5B58
smfcore.equipmentView=\u8BBE\u5907\u4E92\u8054
......@@ -251,3 +251,4 @@ smfcore.safetyInventory.stockReel=\u5EAB\u5B58\u76E4\u6578
smfcore.safetyInventory.supplementReel=\u88DC\u5145\u76E4\u6578
smfcore.safetyInventory.amount=\u6700\u5C0F\u5305\u88DD
smfcore.component.storeError=\u8ACB\u8F38\u5165\u6B63\u78BA\u7684\u5EAB\u5B58\uFF0C\u6700\u5C0F\u5EAB\u5B58<=\u5B89\u5168\u5EAB\u5B58<=\u6700\u5927\u5EAB\u5B58
smfcore.equipmentView=\u8A2D\u5099\u4E92\u806F
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!