Commit a90f22ac zshaohui

1.日志监控 功能提交

1 个父辈 229df88d
......@@ -95,7 +95,7 @@ public class GlobalExceptionHandler {
String targetMsg=messageUtils.getText(e.getMsgKey(),e.getMsgParam(),servlet.getLocale() ,e.getDefaultMsg());
e.getMessage();
Message message = new Message();
message.setType(MessageType.ERROR.name());
message.setType(MessageType.WARNING.name());
message.setDeviceName("server");
message.setMsgCode(e.getMsgKey());
message.setMsgParams(e.getMsgParam());
......
......@@ -207,7 +207,8 @@ public class DataInitManager {
Menu pMenuLog = Menu.CreatePMenu("日志管理", 6, "log", 2, "log",null);
addNewFunctionMenu(61, pMenuLog, "taskLog", "物料日志", "taskLog", "neolight/taskLog/index", "education",functionMenuMap);
addNewFunctionMenu(62, pMenuLog, "message", "消息查询", "message", "neolight/message/index", "messagefind",functionMenuMap);
addNewFunctionMenu(63, pMenuLog, "interfaceException", "接口异常", "interfaceException", "neolight/interfaceException/index", "messagefind",functionMenuMap);
addNewFunctionMenu(63, pMenuLog, "interfaceException", "接口异常", "interfaceException", "neolight/interfaceException/index", "messagefind", functionMenuMap);
addNewFunctionMenu(64, pMenuLog, "logMonitor", "日志监控", "logMonitor", "neolight/logMonitor/index", "messagefind", functionMenuMap);
//报表:出入库、库存
Menu pMenuReport = Menu.CreatePMenu("报表", 7, "report", 2, "inOutData",null);
......
......@@ -21,4 +21,9 @@ public enum MessageType {
* 3 设备操作数据
*/
DATA,
/**
* 4 需要人员立即操作的
*/
CRITICAL
}
package com.neotel.smfcore.core.message.rest;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.google.common.collect.Maps;
import com.neotel.smfcore.common.bean.BetweenData;
import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.utils.QueryHelp;
import com.neotel.smfcore.core.language.util.MessageUtils;
import com.neotel.smfcore.core.message.rest.bean.dto.MessageDto;
......@@ -9,12 +13,14 @@ import com.neotel.smfcore.core.message.rest.bean.mapstruct.MessageMapper;
import com.neotel.smfcore.core.message.rest.bean.query.MessageCriteria;
import com.neotel.smfcore.core.message.service.manager.IMessageManager;
import com.neotel.smfcore.core.message.service.po.Message;
import com.neotel.smfcore.security.annotation.AnonymousAccess;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.security.access.prepost.PreAuthorize;
......@@ -24,7 +30,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.*;
@Slf4j
@RestController
......@@ -71,4 +77,56 @@ public class MessageController {
List<String> typeList=messageManager.findDeviceNameList();
return typeList;
}
@ApiOperation("根据type汇总总数量")
@GetMapping("/typeTotalByDate")
@AnonymousAccess
public ResultBean typeTotalByDate(MessageCriteria criteria,HttpServletRequest request) {
//默认取7天的,如果客户端传的有,就用客户端的
Date endDate = new Date();
Date startDate = DateUtil.offsetDay(endDate, -7);
BetweenData<Date> updateDate = criteria.getUpdateDate();
if (updateDate != null && !updateDate.isEmpty()) {
Date from = updateDate.getFrom();
Date to = updateDate.getTo();
if (from != null) {
startDate = from;
}
if (to != null) {
endDate = to;
}
}
Query q = new Query();
Criteria c = Criteria.where("msg").exists(true).ne("").and("updateDate").gte(startDate).lt(endDate);
q.addCriteria(c);
q.with(Sort.by(Sort.Direction.DESC, "createDate"));
//q.fields().include("type,");
List<Message> messageList = messageManager.findByQuery(q);
Map<String, List<Message>> resultMap = Maps.newConcurrentMap();
resultMap.put("INFO",new ArrayList<>());
resultMap.put("WARNING",new ArrayList<>());
resultMap.put("ERROR",new ArrayList<>());
resultMap.put("CRITICAL",new ArrayList<>());
if (messageList != null && !messageList.isEmpty()) {
for (Message message : messageList) {
String type = message.getType();
if (ObjectUtil.isNotEmpty(message.getMsgCode())) {
message.setMsg(MessageUtils.getText(message.getMsgCode(), message.getMsgParams(), request.getLocale(), message.getMsg()));
}
List<Message> list = resultMap.get(type);
if (list == null) {
list = new ArrayList<>();
}
list.add(message);
resultMap.put(type, list);
}
}
return ResultBean.newOkResult(resultMap);
}
}
......@@ -2,11 +2,13 @@ package com.neotel.smfcore.core.message.rest.bean.query;
import com.neotel.smfcore.common.annotation.QueryCondition;
import com.neotel.smfcore.common.bean.BetweenData;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
@Data
public class MessageCriteria {
......@@ -14,7 +16,7 @@ public class MessageCriteria {
private String blurry;
@QueryCondition(type = QueryCondition.Type.BETWEEN, propName = "updateDate")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private BetweenData<Date> updateDate;
......@@ -33,4 +35,8 @@ public class MessageCriteria {
@QueryCondition
@ApiModelProperty("类型")
private String type;
@QueryCondition(type = QueryCondition.Type.IN,propName = "type")
@ApiModelProperty("多个类型")
private List<String> typeList;
}
......@@ -89,6 +89,7 @@ public class DevicesStatusUtil {
if(msgArray!=null&& msgArray.length>0) {
for (String msg :
msgArray) {
msg = msg.trim();
String msgType = MessageType.ERROR.name();
if (msg.startsWith("A=")) {
msgType = MessageType.ERROR.name();
......@@ -99,6 +100,9 @@ public class DevicesStatusUtil {
} else if (msg.startsWith("W=")) {
msgType = MessageType.WARNING.name();
msg = msg.substring(2);
} else if (msg.startsWith("C=")){
msgType = MessageType.CRITICAL.name();
msg = msg.substring(2);
}
DeviceMessageUtil.addDeviceMessage(cid, msgType, "", msgCode, msg, msgParam);
}
......
......@@ -272,3 +272,4 @@ smfcore.error.storage.outNotEnd=\u6599\u4ED3{0}\u6709\u51FA\u5E93\u4EFB\u52A1\u6
#smfclient.loadMaterialFailed=loading material failed:{0}
#smfclient.checkingMaterialOk=checking material is ok:{0}
#smfclient.checkNg=checking material is ng:{0}
smfcore.logMonitor=\u65E5\u5FD7\u76D1\u63A7
\ No newline at end of file
......@@ -256,4 +256,4 @@ smfcore.equipmentView=Equipment connected
smfcore.greaterThanZero=Amount Must be greater than 0
smfcore.error.virtualOut.num=The number cannot exceed {0}
smfcore.error.virtualOut.noItem=The corresponding material is not found in work order {0}
smfcore.logMonitor=Log Monitoring
......@@ -255,4 +255,4 @@ smfcore.equipmentView=\u8BBE\u5907\u4E92\u8054
smfcore.greaterThanZero=\u6570\u91CF\u5FC5\u987B\u5927\u4E8E0
smfcore.error.virtualOut.num=\u6570\u91CF\u4E0D\u80FD\u8D85\u8FC7{0}
smfcore.error.virtualOut.noItem=\u5DE5\u5355{0}\u4E2D\u672A\u627E\u5230\u5BF9\u5E94\u7684PN\u6216\u7269\u6599\u7F16\u53F7
smfcore.logMonitor=\u30ED\u30B0\u76E3\u8996
......@@ -255,3 +255,4 @@ smfcore.equipmentView=\u8BBE\u5907\u4E92\u8054
smfcore.greaterThanZero=\u6570\u91CF\u5FC5\u987B\u5927\u4E8E0
smfcore.error.virtualOut.num=\u6570\u91CF\u4E0D\u80FD\u8D85\u8FC7{0}
smfcore.error.virtualOut.noItem=\u5DE5\u5355{0}\u4E2D\u672A\u627E\u5230\u5BF9\u5E94\u7684PN\u6216\u7269\u6599\u7F16\u53F7
smfcore.logMonitor=\u65E5\u5FD7\u76D1\u63A7
\ No newline at end of file
......@@ -255,3 +255,4 @@ smfcore.equipmentView=\u8A2D\u5099\u4E92\u806F
smfcore.greaterThanZero=\u6578\u91CF\u5FC5\u9808\u5927\u65BC0
smfcore.error.virtualOut.num=\u6578\u91CF\u4E0D\u80FD\u8D85\u904E{0}
smfcore.error.virtualOut.noItem=\u5DE5\u55AE{0}\u4E2D\u672A\u627E\u5230\u5C0D\u61C9\u7684PN\u7269\u6599\u7DE8\u865F
smfcore.logMonitor=\u65E5\u8A8C\u76E3\u63A7
\ No newline at end of file
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!