update
This commit is contained in:
@@ -13,12 +13,12 @@ import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import com.maibu.core.business.DevicePlan;
|
||||
import com.maibu.core.business.dto.DeviceTaskCommandDTO;
|
||||
import com.maibu.core.controller.BaseController;
|
||||
import com.maibu.core.domain.AjaxResult;
|
||||
import com.maibu.core.domain.model.LoginUser;
|
||||
import com.maibu.core.enums.DeviceTaskStaus;
|
||||
import com.maibu.core.page.TableDataInfo;
|
||||
import com.maibu.dto.DeviceTaskCommandDTO;
|
||||
import com.maibu.dto.DeviceTaskQueryDTO;
|
||||
import com.maibu.memory.GlobalMemory;
|
||||
import com.maibu.memory.SiteMemory;
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
package com.maibu.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
|
||||
@Data
|
||||
public class DeviceTaskCommandDTO {
|
||||
|
||||
private String deviceId;
|
||||
|
||||
private Long routeId; // 线路id
|
||||
|
||||
private LocalDateTime startTime; //开始时间 时分秒
|
||||
|
||||
private Long orgId;
|
||||
|
||||
private Long siteId;
|
||||
|
||||
private Long taskId;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.maibu.handler;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import com.maibu.core.business.dto.DeviceTaskCommandDTO;
|
||||
import com.maibu.core.business.dto.uav.FlightTaskCreateDTO;
|
||||
import com.maibu.core.business.inter.mower.MowerCommandInter;
|
||||
import com.maibu.core.business.inter.uav.UAVCommandInter;
|
||||
import com.maibu.service.DeviceTaskService;
|
||||
|
||||
@Component
|
||||
public class MowerCommamdHandler implements MowerCommandInter {
|
||||
|
||||
@Autowired
|
||||
private DeviceTaskService dService;
|
||||
|
||||
@Override
|
||||
public void createDeviceTask(DeviceTaskCommandDTO dto) {
|
||||
dService.createDeviceTask(dto, "system");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -16,15 +16,21 @@ import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import com.maibu.constant.FastBeeConstant;
|
||||
import com.maibu.core.business.AlarmOrderConfig;
|
||||
import com.maibu.core.business.DevicePlan;
|
||||
import com.maibu.core.business.DevicePlanTask;
|
||||
import com.maibu.core.business.DeviceRunParam;
|
||||
import com.maibu.core.business.ErrorIdentificationStandard;
|
||||
import com.maibu.core.business.OrderModel;
|
||||
import com.maibu.core.domain.entity.SysSite;
|
||||
import com.maibu.core.enums.DeviceTaskStaus;
|
||||
import com.maibu.influxdb.util.InfluxDBUtil;
|
||||
import com.maibu.mapper.AlarmOrderConfigMapper;
|
||||
import com.maibu.mapper.DevicePlanMapper;
|
||||
import com.maibu.mapper.DevicePlanTaskMapper;
|
||||
import com.maibu.mapper.DeviceRunParamMapper;
|
||||
import com.maibu.mapper.ErrorIdentificationStandardMapper;
|
||||
import com.maibu.mapper.OrderModelMapper;
|
||||
import com.maibu.mapper.SysSiteMapper;
|
||||
import com.maibu.memory.GlobalMemory;
|
||||
import com.maibu.memory.SiteMemory;
|
||||
@@ -63,6 +69,12 @@ public class InitThread implements ApplicationRunner {
|
||||
|
||||
@Autowired
|
||||
private DeviceRunParamMapper deviceRunParamMapper;
|
||||
@Autowired
|
||||
private ErrorIdentificationStandardMapper errorIdentificationStandardMapper;
|
||||
@Autowired
|
||||
private OrderModelMapper orderModelMapper;
|
||||
@Autowired
|
||||
private AlarmOrderConfigMapper alarmOrderConfigMapper;
|
||||
|
||||
@Value("${influxdb.url}")
|
||||
private String influxDBUrl;
|
||||
@@ -157,6 +169,43 @@ public class InitThread implements ApplicationRunner {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
List<ErrorIdentificationStandard> standadList = errorIdentificationStandardMapper.selectList();
|
||||
if (!CollectionUtils.isEmpty(standadList)) {
|
||||
standadList.forEach(x -> {
|
||||
Long orgId = x.getOrgId();
|
||||
Long siteId = x.getId();
|
||||
SiteMemory siteMemory = GlobalMemory.getSiteMemory(orgId, siteId);
|
||||
if (siteMemory != null) {
|
||||
siteMemory.saveErrorIdentificationStandard(x);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
List<OrderModel> orderModelList = orderModelMapper.selectList();
|
||||
if (!CollectionUtils.isEmpty(orderModelList)) {
|
||||
orderModelList.forEach(x -> {
|
||||
Long orgId = x.getOrgId();
|
||||
Long siteId = x.getId();
|
||||
SiteMemory siteMemory = GlobalMemory.getSiteMemory(orgId, siteId);
|
||||
if (siteMemory != null) {
|
||||
siteMemory.saveOrderModel(x);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
List<AlarmOrderConfig> alarmOrderList = alarmOrderConfigMapper.selectList();
|
||||
if (!CollectionUtils.isEmpty(alarmOrderList)) {
|
||||
alarmOrderList.forEach(x -> {
|
||||
Long orgId = x.getOrgId();
|
||||
Long siteId = x.getId();
|
||||
SiteMemory siteMemory = GlobalMemory.getSiteMemory(orgId, siteId);
|
||||
if (siteMemory != null) {
|
||||
siteMemory.saveAlarmOrderConfig(x);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 未执行完的重复计划
|
||||
LambdaQueryWrapperX<DevicePlan> query = new LambdaQueryWrapperX<>();
|
||||
List<String> list = Arrays.asList(DeviceTaskStaus.NEW.getCode(), DeviceTaskStaus.EXECUTING.getCode(),
|
||||
|
||||
@@ -1,16 +1,8 @@
|
||||
package com.maibu.netty.handler;
|
||||
|
||||
import com.maibu.common.CommandConstant;
|
||||
import com.maibu.core.enums.ConnectorType;
|
||||
import com.maibu.core.business.device.Connector;
|
||||
import com.maibu.core.business.device.NettyDevice;
|
||||
import com.maibu.manager.DeviceSessionManager;
|
||||
import com.maibu.memory.GlobalMemory;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.channel.Channel;
|
||||
import io.netty.channel.ChannelHandler;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import io.netty.channel.SimpleChannelInboundHandler;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.apache.commons.codec.binary.Hex;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -18,8 +10,17 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import com.maibu.common.CommandConstant;
|
||||
import com.maibu.core.business.device.Connector;
|
||||
import com.maibu.core.business.device.NettyDevice;
|
||||
import com.maibu.core.enums.ConnectorType;
|
||||
import com.maibu.manager.DeviceSessionManager;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.channel.Channel;
|
||||
import io.netty.channel.ChannelHandler;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import io.netty.channel.SimpleChannelInboundHandler;
|
||||
|
||||
@Component
|
||||
@ChannelHandler.Sharable
|
||||
|
||||
@@ -4,8 +4,9 @@ import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLEncoder;
|
||||
import java.security.InvalidKeyException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import javax.crypto.Mac;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
@@ -19,17 +20,19 @@ import com.dingtalk.api.DefaultDingTalkClient;
|
||||
import com.dingtalk.api.DingTalkClient;
|
||||
import com.dingtalk.api.request.OapiRobotSendRequest;
|
||||
import com.dingtalk.api.response.OapiRobotSendResponse;
|
||||
import com.maibu.core.business.alarm_center.Alarm;
|
||||
import com.maibu.core.business.AlarmOrderConfig;
|
||||
import com.maibu.core.business.IOTWorkOrder;
|
||||
import com.maibu.core.business.alarm_center.AlarmMessage;
|
||||
import com.maibu.core.business.device.NettyDevice;
|
||||
import com.maibu.core.redis.RedisCache;
|
||||
import com.maibu.dto.DeviceErrorPushDTO;
|
||||
import com.maibu.dto.DeviceErrorPushDetail;
|
||||
import com.maibu.manager.DeviceSessionManager;
|
||||
import com.maibu.memory.GlobalMemory;
|
||||
import com.maibu.memory.SiteMemory;
|
||||
import com.maibu.service.impl.AlarmServiceImpl;
|
||||
import com.maibu.service.impl.WorkOrderServiceImpl;
|
||||
import com.maibu.utils.DingTalkTemplate;
|
||||
import com.maibu.utils.SecurityUtils;
|
||||
import com.maibu.utils.json.JsonUtils;
|
||||
import com.taobao.api.ApiException;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -44,6 +47,12 @@ public class AlertPushService {
|
||||
@Autowired
|
||||
private AlarmServiceImpl alarmService;
|
||||
|
||||
@Autowired
|
||||
private RedisCache redisCache;
|
||||
|
||||
@Autowired
|
||||
private WorkOrderServiceImpl wService;
|
||||
|
||||
public void messagePushHandler(String deviceId, List<DeviceErrorPushDTO> dtos) {
|
||||
NettyDevice nettyDevice = sessionManager.getDevice(deviceId);
|
||||
if (nettyDevice != null && nettyDevice.getDevice() != null) {
|
||||
@@ -58,17 +67,48 @@ public class AlertPushService {
|
||||
String token = siteMemory.getSysSite().getDingTalkToken();
|
||||
dtos.forEach(dto -> {
|
||||
if (!CollectionUtils.isEmpty(dto.getDetails())) {
|
||||
List<AlarmMessage> newList = new ArrayList<>();
|
||||
List<IOTWorkOrder> workOrders = new ArrayList<>();
|
||||
dto.getDetails().forEach(detail -> {
|
||||
if (dingTalkPush == 1) {
|
||||
pushDingTalkMessage(secret, token, DingTalkTemplate.buildText(detail));
|
||||
String pushKey = "alarm:" + "dingtalk:" + deviceId + ":" + detail.getNo();
|
||||
Boolean exists = redisCache.hasKey(pushKey);
|
||||
if (exists != null && !exists) {
|
||||
pushDingTalkMessage(secret, token, DingTalkTemplate.buildText(detail));
|
||||
redisCache.setCacheObject(pushKey, JsonUtils.toJsonString(detail), 10,
|
||||
TimeUnit.MINUTES);
|
||||
}
|
||||
}
|
||||
if (emailPush == 1) {
|
||||
pushEmailMessage(null, null);
|
||||
String pushKey = "alarm:" + "email:" + deviceId + ":" + detail.getNo();
|
||||
Boolean exists = redisCache.hasKey(pushKey);
|
||||
if (exists != null && !exists) {
|
||||
pushEmailMessage(null, null);
|
||||
redisCache.setCacheObject(pushKey, JsonUtils.toJsonString(detail), 10,
|
||||
TimeUnit.MINUTES);
|
||||
}
|
||||
}
|
||||
if (alertPush == 1) {
|
||||
String pushKey = "alarm:" + "mqtt:" + deviceId + ":" + detail.getNo();
|
||||
Boolean exists = redisCache.hasKey(pushKey);
|
||||
if (exists != null && !exists) {
|
||||
newList.add(detail);
|
||||
redisCache.setCacheObject(pushKey, JsonUtils.toJsonString(detail), 10,
|
||||
TimeUnit.MINUTES);
|
||||
}
|
||||
}
|
||||
AlarmOrderConfig config = siteMemory.getAlarmOrderConfig(detail.getNo());
|
||||
if (config != null && config.isAutoGenerateOrder()) {
|
||||
IOTWorkOrder workOrder = wService.generateWorkOrders(siteId, deviceId, orgId, orgId);
|
||||
workOrders.add(workOrder);
|
||||
}
|
||||
});
|
||||
if (alertPush == 1) {
|
||||
alarmService.pushAlertMes(dto.getDetails());
|
||||
}
|
||||
if (!CollectionUtils.isEmpty(workOrders)) {
|
||||
wService.saveAll(workOrders);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
package com.maibu.service;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class DevicePathService {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -21,12 +21,12 @@ import com.maibu.core.business.DevicePlanTask;
|
||||
import com.maibu.core.business.DeviceTaskPlanRule;
|
||||
import com.maibu.core.business.WorkRecord;
|
||||
import com.maibu.core.business.device.NettyDevice;
|
||||
import com.maibu.core.business.dto.DeviceTaskCommandDTO;
|
||||
import com.maibu.core.domain.entity.SysSite;
|
||||
import com.maibu.core.domain.model.LoginUser;
|
||||
import com.maibu.core.enums.DeviceTaskStaus;
|
||||
import com.maibu.dto.DevicePlanStatisticsDTO;
|
||||
import com.maibu.dto.DevicePlanTaskStatisticsDTO;
|
||||
import com.maibu.dto.DeviceTaskCommandDTO;
|
||||
import com.maibu.dto.DeviceTaskQueryDTO;
|
||||
import com.maibu.dto.DeviceWorkStatisticsDTO;
|
||||
import com.maibu.manager.DeviceSessionManager;
|
||||
|
||||
@@ -1,41 +1,5 @@
|
||||
package com.maibu.service;
|
||||
|
||||
import cn.hutool.core.io.IoUtil;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.maibu.common.CommandConstant;
|
||||
import com.maibu.common.NettyCacheKey;
|
||||
import com.maibu.core.business.DeviceRunningStatusHistory;
|
||||
import com.maibu.core.business.DeviceStatusRecordDTO;
|
||||
import com.maibu.core.enums.CompareEnum;
|
||||
import com.maibu.core.enums.ErrorSource;
|
||||
import com.maibu.core.enums.RespondCode;
|
||||
import com.maibu.core.redis.RedisCache;
|
||||
import com.maibu.dto.DeviceErrorPushDTO;
|
||||
import com.maibu.dto.DeviceErrorPushDetail;
|
||||
import com.maibu.core.business.device.NettyDevice;
|
||||
import com.maibu.core.business.inter.WebsocketMesDispather;
|
||||
import com.maibu.core.business.ErrorIdentificationStandard;
|
||||
import com.maibu.core.business.alarm_center.AlarmMessage;
|
||||
import com.maibu.manager.DeviceSessionManager;
|
||||
import com.maibu.mapper.ErrorIdentificationStandardMapper;
|
||||
import com.maibu.memory.GlobalMemory;
|
||||
import com.maibu.memory.SiteMemory;
|
||||
import com.maibu.mqtt.MqttTopic;
|
||||
import com.maibu.utils.CommandUtils;
|
||||
import com.maibu.utils.CompareUtils;
|
||||
import com.maibu.utils.json.JsonUtils;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.eclipse.paho.client.mqttv3.MqttException;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.core.io.ResourceLoader;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Field;
|
||||
import java.time.LocalDateTime;
|
||||
@@ -44,9 +8,44 @@ import java.util.Collection;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.eclipse.paho.client.mqttv3.MqttException;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.core.io.ResourceLoader;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.maibu.common.NettyCacheKey;
|
||||
import com.maibu.core.business.DeviceRunningStatusHistory;
|
||||
import com.maibu.core.business.DeviceStatusRecordDTO;
|
||||
import com.maibu.core.business.ErrorIdentificationStandard;
|
||||
import com.maibu.core.business.alarm_center.AlarmMessage;
|
||||
import com.maibu.core.business.device.NettyDevice;
|
||||
import com.maibu.core.business.inter.WebsocketMesDispather;
|
||||
import com.maibu.core.enums.CompareEnum;
|
||||
import com.maibu.core.enums.ErrorSource;
|
||||
import com.maibu.core.enums.RespondCode;
|
||||
import com.maibu.core.redis.RedisCache;
|
||||
import com.maibu.dto.DeviceErrorPushDTO;
|
||||
import com.maibu.manager.DeviceSessionManager;
|
||||
import com.maibu.mapper.ErrorIdentificationStandardMapper;
|
||||
import com.maibu.memory.GlobalMemory;
|
||||
import com.maibu.memory.SiteMemory;
|
||||
import com.maibu.mqtt.MqttTopic;
|
||||
import com.maibu.utils.CompareUtils;
|
||||
|
||||
import cn.hutool.core.io.IORuntimeException;
|
||||
import cn.hutool.core.io.IoUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
@@ -55,9 +54,6 @@ public class DeviceThreadService {
|
||||
@Autowired
|
||||
private ResourceLoader resourceLoader;
|
||||
|
||||
@Autowired
|
||||
private SiteMemory siteMemory;
|
||||
|
||||
@Autowired
|
||||
private RedisCache redisCache;
|
||||
|
||||
@@ -76,6 +72,9 @@ public class DeviceThreadService {
|
||||
public void deviceErrorMonitor() throws InterruptedException, IOException {
|
||||
initStandard();
|
||||
|
||||
// TODO fix 后续是否分多个线程 一个site一个线程
|
||||
// 有还需要更新接受故障方式。
|
||||
|
||||
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
|
||||
executor.scheduleWithFixedDelay(() -> {
|
||||
try {
|
||||
@@ -89,11 +88,16 @@ public class DeviceThreadService {
|
||||
recordDTO.getHistories()
|
||||
.sort(Comparator.comparing(DeviceRunningStatusHistory::getCreateTime).reversed());
|
||||
DeviceRunningStatusHistory history = recordDTO.getHistories().get(0);
|
||||
List<AlarmMessage> compared = compareErrorStandard(history,
|
||||
siteMemory.standards.get(ErrorSource.MOWER));
|
||||
|
||||
String[] parts = k.split(":");
|
||||
String deviceId = parts[1];
|
||||
NettyDevice slaveDevice = sessionManager.getDevice(deviceId);
|
||||
Long siteId = slaveDevice != null ? slaveDevice.getDevice().getSiteId() : null;
|
||||
Long orgId = slaveDevice != null ? slaveDevice.getDevice().getOrgId() : null;
|
||||
|
||||
SiteMemory siteMemory = GlobalMemory.getSiteMemory(orgId, siteId);
|
||||
List<AlarmMessage> compared = compareErrorStandard(siteId, orgId, history,
|
||||
siteMemory.standards.get(ErrorSource.MOWER));
|
||||
|
||||
DeviceErrorPushDTO pushDTO = new DeviceErrorPushDTO();
|
||||
pushDTO.setDeviceId(deviceId);
|
||||
@@ -116,30 +120,55 @@ public class DeviceThreadService {
|
||||
} catch (Exception e) {
|
||||
log.error("执行监测错误线程错误:{}", e.getMessage());
|
||||
}
|
||||
}, 0, 2, TimeUnit.MINUTES);
|
||||
}, 0, 5, TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
public void initStandard() throws IOException {
|
||||
if (siteMemory.standards == null) {
|
||||
List<ErrorIdentificationStandard> list = standardMapper.selectList();
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
// 读取resource目录下的device-config.json文件
|
||||
Resource resource = resourceLoader.getResource("classpath:errorStandard.json");
|
||||
// 使用fastjson2转换为DeviceConfig对象
|
||||
String jsonContent = IoUtil.readUtf8(resource.getInputStream());
|
||||
List<ErrorIdentificationStandard> newStandards = JSON.parseArray(jsonContent,
|
||||
ErrorIdentificationStandard.class);
|
||||
if (!CollectionUtils.isEmpty(newStandards)) {
|
||||
standardMapper.insertBatch(newStandards);
|
||||
siteMemory.standards = newStandards.stream()
|
||||
.collect(java.util.stream.Collectors
|
||||
.groupingBy(ErrorIdentificationStandard::getErrorSource));
|
||||
GlobalMemory.getAllSiteMemory().forEach(siteMemory -> {
|
||||
if (siteMemory != null && siteMemory.standards == null) {
|
||||
LambdaQueryWrapper<ErrorIdentificationStandard> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(ErrorIdentificationStandard::getSiteId, siteMemory.sysSite.getId());
|
||||
List<ErrorIdentificationStandard> list = standardMapper.selectList(queryWrapper);
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
try {
|
||||
// 读取resource目录下的device-config.json文件
|
||||
Resource resource = resourceLoader.getResource("classpath:errorStandard.json");
|
||||
// 使用fastjson2转换为DeviceConfig对象
|
||||
String jsonContent;
|
||||
jsonContent = IoUtil.readUtf8(resource.getInputStream());
|
||||
List<ErrorIdentificationStandard> newStandards = JSON.parseArray(jsonContent,
|
||||
ErrorIdentificationStandard.class);
|
||||
if (!CollectionUtils.isEmpty(newStandards)) {
|
||||
newStandards.forEach(x -> {
|
||||
x.setOrgId(siteMemory.sysSite.getOrgId());
|
||||
x.setSiteId(siteMemory.sysSite.getId());
|
||||
});
|
||||
standardMapper.insertBatch(newStandards);
|
||||
siteMemory.standards = newStandards.stream()
|
||||
.filter(e -> e.getErrorSource() != null)
|
||||
.collect(Collectors.groupingBy(
|
||||
ErrorIdentificationStandard::getErrorSource,
|
||||
ConcurrentHashMap::new,
|
||||
Collectors.toList()));
|
||||
|
||||
}
|
||||
} catch (IORuntimeException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
} else {
|
||||
siteMemory.standards = list.stream()
|
||||
.filter(e -> e.getErrorSource() != null)
|
||||
.collect(Collectors.groupingBy(
|
||||
ErrorIdentificationStandard::getErrorSource,
|
||||
ConcurrentHashMap::new,
|
||||
Collectors.toList()));
|
||||
}
|
||||
} else {
|
||||
siteMemory.standards = list.stream()
|
||||
.collect(java.util.stream.Collectors.groupingBy(ErrorIdentificationStandard::getErrorSource));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void pushErrorMessage(String deviceId, String dto) {
|
||||
@@ -165,7 +194,7 @@ public class DeviceThreadService {
|
||||
}
|
||||
}
|
||||
|
||||
public List<AlarmMessage> compareErrorStandard(DeviceRunningStatusHistory history,
|
||||
public List<AlarmMessage> compareErrorStandard(Long siteId, Long orgId, DeviceRunningStatusHistory history,
|
||||
List<ErrorIdentificationStandard> standards) {
|
||||
if (history == null || CollectionUtils.isEmpty(standards))
|
||||
return null;
|
||||
@@ -189,6 +218,8 @@ public class DeviceThreadService {
|
||||
alarm.setSuggestion(standard.getSuggestion());
|
||||
alarm.setStatus("未处理");
|
||||
alarm.setTime(LocalDateTime.now());
|
||||
alarm.setOrgId(orgId);
|
||||
alarm.setSiteId(siteId);
|
||||
list.add(alarm);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user