Compare commits
14 Commits
2025-07
...
a0f6846f53
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a0f6846f53 | ||
|
|
a177d7991c | ||
|
|
f8fb45cf6f | ||
|
|
910069a463 | ||
| 56477157aa | |||
| a6b0509179 | |||
|
|
b5e5286411 | ||
|
|
d01c0e14c0 | ||
|
|
0cf8bbc3d5 | ||
|
|
3a239b5123 | ||
|
|
0eabe977cb | ||
|
|
f1f86ea854 | ||
|
|
e048c92ad1 | ||
|
|
65f46a22f5 |
@@ -1,5 +1,6 @@
|
|||||||
package com.njcn.gather.detection.handler;
|
package com.njcn.gather.detection.handler;
|
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.util.NumberUtil;
|
import cn.hutool.core.util.NumberUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
@@ -1725,6 +1726,9 @@ public class SocketDevResponseService {
|
|||||||
|
|
||||||
List<PreDetection> pqDevList = iPqDevService.getDevInfo(param.getDevIds());
|
List<PreDetection> pqDevList = iPqDevService.getDevInfo(param.getDevIds());
|
||||||
FormalTestManager.devList = pqDevList;
|
FormalTestManager.devList = pqDevList;
|
||||||
|
FormalTestManager.devList.forEach(x -> {
|
||||||
|
x.setDevType(x.getIcdType());
|
||||||
|
});
|
||||||
FormalTestManager.devMapMonitorNum = pqDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP, it -> it.getMonitorList().stream().map(PreDetection.MonitorListDTO::getLineId).collect(Collectors.toList())));
|
FormalTestManager.devMapMonitorNum = pqDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP, it -> it.getMonitorList().stream().map(PreDetection.MonitorListDTO::getLineId).collect(Collectors.toList())));
|
||||||
FormalTestManager.monitorIdListComm = pqDevList.stream().flatMap(x -> x.getMonitorList().stream()).map(PreDetection.MonitorListDTO::getLineId).collect(Collectors.toList());
|
FormalTestManager.monitorIdListComm = pqDevList.stream().flatMap(x -> x.getMonitorList().stream()).map(PreDetection.MonitorListDTO::getLineId).collect(Collectors.toList());
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.njcn.gather.detection.handler;
|
package com.njcn.gather.detection.handler;
|
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.njcn.gather.detection.pojo.enums.SourceOperateCodeEnum;
|
import com.njcn.gather.detection.pojo.enums.SourceOperateCodeEnum;
|
||||||
@@ -234,9 +235,9 @@ public class SocketSourceResponseService {
|
|||||||
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
|
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
|
||||||
String s = param.getUserPageId() + DEV;
|
String s = param.getUserPageId() + DEV;
|
||||||
//开始设备通讯检测(发送设备初始化)
|
//开始设备通讯检测(发送设备初始化)
|
||||||
List<PreDetection> devList = iPqDevService.getDevInfo(param.getDevIds());
|
//List<PreDetection> devList = iPqDevService.getDevInfo(param.getDevIds());
|
||||||
Map<String, List<PreDetection>> map = new HashMap<>(1);
|
Map<String, List<PreDetection>> map = new HashMap<>(1);
|
||||||
map.put("deviceList", devList);
|
map.put("deviceList", FormalTestManager.devList);
|
||||||
String jsonString = JSON.toJSONString(map);
|
String jsonString = JSON.toJSONString(map);
|
||||||
socketMsg.setRequestId(SourceOperateCodeEnum.YJC_SBTXJY.getValue());
|
socketMsg.setRequestId(SourceOperateCodeEnum.YJC_SBTXJY.getValue());
|
||||||
socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_01.getValue());
|
socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_01.getValue());
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import lombok.Getter;
|
|||||||
public enum DevReportStateEnum {
|
public enum DevReportStateEnum {
|
||||||
NOT_GENERATED("未生成", 0),
|
NOT_GENERATED("未生成", 0),
|
||||||
GENERATED("已生成", 1),
|
GENERATED("已生成", 1),
|
||||||
|
GENERATED_UPLOADED("已生成且已上传", 3),
|
||||||
UNCHECKED("未检", 2);
|
UNCHECKED("未检", 2);
|
||||||
|
|
||||||
private final Integer value;
|
private final Integer value;
|
||||||
|
|||||||
@@ -351,7 +351,6 @@ public class PqDevServiceImpl extends ServiceImpl<PqDevMapper, PqDev> implements
|
|||||||
.like(StrUtil.isNotBlank(param.getName()), PqDev::getName, param.getName())
|
.like(StrUtil.isNotBlank(param.getName()), PqDev::getName, param.getName())
|
||||||
.in(ObjectUtil.isNotEmpty(param.getCheckStateList()), PqDev::getCheckState, param.getCheckStateList())
|
.in(ObjectUtil.isNotEmpty(param.getCheckStateList()), PqDev::getCheckState, param.getCheckStateList())
|
||||||
.eq(ObjectUtil.isNotNull(param.getCheckResult()), PqDev::getCheckResult, param.getCheckResult())
|
.eq(ObjectUtil.isNotNull(param.getCheckResult()), PqDev::getCheckResult, param.getCheckResult())
|
||||||
.eq(ObjectUtil.isNotNull(param.getCheckResult()), PqDev::getCheckResult, param.getCheckResult())
|
|
||||||
.eq(ObjectUtil.isNotNull(param.getReportState()), PqDev::getReportState, param.getReportState())
|
.eq(ObjectUtil.isNotNull(param.getReportState()), PqDev::getReportState, param.getReportState())
|
||||||
.eq(PqDev::getState, DataStateEnum.ENABLE.getCode())
|
.eq(PqDev::getState, DataStateEnum.ENABLE.getCode())
|
||||||
.orderByDesc(PqDev::getCreateTime)
|
.orderByDesc(PqDev::getCreateTime)
|
||||||
|
|||||||
@@ -156,4 +156,15 @@ public class ReportController extends BaseController {
|
|||||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, false, methodDescribe);
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, false, methodDescribe);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OperateInfo
|
||||||
|
@PostMapping("/uploadReportToCloud")
|
||||||
|
@ApiOperation("批量上传检测报告到云端")
|
||||||
|
@ApiImplicitParam(name = "deviceIds", value = "被检设备ID列表,为空时上传所有已生成报告的设备", required = false)
|
||||||
|
public HttpResult<Object> uploadReportToCloud(@RequestBody(required = false) List<String> deviceIds) {
|
||||||
|
String methodDescribe = getMethodDescribe("uploadReportToCloud");
|
||||||
|
LogUtil.njcnDebug(log, "{},设备ID列表为:{}", methodDescribe, deviceIds);
|
||||||
|
pqReportService.uploadReportToCloud(deviceIds);
|
||||||
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,6 +76,11 @@ public interface IPqReportService extends IService<PqReport> {
|
|||||||
*/
|
*/
|
||||||
boolean documented(List<String> id);
|
boolean documented(List<String> id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量上传检测报告到云端
|
||||||
|
*
|
||||||
|
* @param deviceIds 被检设备ID列表,为空时上传所有已生成报告的设备
|
||||||
|
*/
|
||||||
|
void uploadReportToCloud(List<String> deviceIds);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -102,6 +102,7 @@ import java.nio.file.Path;
|
|||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.concurrent.LinkedBlockingQueue;
|
import java.util.concurrent.LinkedBlockingQueue;
|
||||||
import java.util.concurrent.ThreadPoolExecutor;
|
import java.util.concurrent.ThreadPoolExecutor;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
@@ -615,17 +616,30 @@ public class PqReportServiceImpl extends ServiceImpl<PqReportMapper, PqReport> i
|
|||||||
}
|
}
|
||||||
out.close();
|
out.close();
|
||||||
this.updateDevAndPlanState(devReportParam.getDevId(), devReportParam.getPlanId());
|
this.updateDevAndPlanState(devReportParam.getDevId(), devReportParam.getPlanId());
|
||||||
sendReportToCloud(pqDevVO.getIp(), reportFullPath, pqDevVO.getCreateId() + ".docx");
|
// 异步将有效的二维码下装到被检设备
|
||||||
// // 检测报告上云
|
CompletableFuture.runAsync(() -> {
|
||||||
// Future<?> future = executor.submit(() -> {
|
try {
|
||||||
// sendReportToCloud(pqDevVO.getIp(), reportFullPath, pqDevVO.getCreateId() + ".docx");
|
sendQrToDevice(pqDevVO.getIp(), pqDevVO.getCreateId() + ".docx");
|
||||||
// });
|
log.info("二维码下装成功,设备IP: {}", pqDevVO.getIp());
|
||||||
// try {
|
} catch (Exception e) {
|
||||||
// future.get();
|
log.error("二维码下装失败,设备IP: {}", pqDevVO.getIp(), e);
|
||||||
// } catch (Exception e) {
|
}
|
||||||
// log.error("检测报告上云异常,异常为:"+e.getMessage());
|
});
|
||||||
// }
|
// 异步将检测报告上传到云端,但是不一定成功,需要无线网支撑
|
||||||
|
CompletableFuture.runAsync(() -> {
|
||||||
|
File file = new File(reportFullPath);
|
||||||
|
if (file.exists()) {
|
||||||
|
try {
|
||||||
|
ResponseEntity<String> responseEntity = restTemplateUtil.uploadFile(cloudUrl + "/upload", file);
|
||||||
|
if (responseEntity.getStatusCode().is2xxSuccessful()) {
|
||||||
|
// 将被检设备的报告状态改为已生成且已上传
|
||||||
|
iPqDevService.updatePqDevReportState(devReportParam.getDevId(), DevReportStateEnum.GENERATED_UPLOADED.getValue());
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("文件上传到云端失败", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
log.error(ReportResponseEnum.GENERATE_REPORT_ERROR.getMessage(), e);
|
log.error(ReportResponseEnum.GENERATE_REPORT_ERROR.getMessage(), e);
|
||||||
throw new BusinessException(ReportResponseEnum.GENERATE_REPORT_ERROR);
|
throw new BusinessException(ReportResponseEnum.GENERATE_REPORT_ERROR);
|
||||||
@@ -633,6 +647,68 @@ public class PqReportServiceImpl extends ServiceImpl<PqReportMapper, PqReport> i
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void sendQrToDevice(String devIp, String reportName) {
|
||||||
|
try {
|
||||||
|
// 上传没问题后,拼接url生成二维码,并将二维码转为bin格式文件传递给设备通讯模块
|
||||||
|
String qrUrl = cloudUrl + "/download/" + reportName;
|
||||||
|
BufferedImage bufferedImage = QrCodeUtil.generate(qrUrl, 148, 148);
|
||||||
|
// 将 BufferedImage 转换为单色图像
|
||||||
|
BufferedImage monoImage = new BufferedImage(148, 148, BufferedImage.TYPE_BYTE_BINARY);
|
||||||
|
Graphics2D g2d = monoImage.createGraphics();
|
||||||
|
g2d.drawImage(bufferedImage, 0, 0, null);
|
||||||
|
g2d.dispose();
|
||||||
|
// 3. 【关键修正】创建一个新的1-bit单色图像,并将原始图像绘制上去,以强制转换为单色位图
|
||||||
|
BufferedImage monochromeImage = new BufferedImage(bufferedImage.getWidth(), bufferedImage.getHeight(), BufferedImage.TYPE_BYTE_BINARY);
|
||||||
|
monochromeImage.getGraphics().drawImage(bufferedImage, 0, 0, null);
|
||||||
|
// 4. 将单色图像在内存中编码为完整的BMP文件流
|
||||||
|
byte[] finalBinData = ImageConverter.convertToBinFormat(bufferedImage);
|
||||||
|
String base64String = Base64.getEncoder().encodeToString(finalBinData);
|
||||||
|
|
||||||
|
// 测试ftp是否连接成功
|
||||||
|
|
||||||
|
|
||||||
|
// 组装设备通讯模块的参数
|
||||||
|
SocketMsg<String> sendFileMsg = new SocketMsg<>();
|
||||||
|
sendFileMsg.setOperateCode(SourceOperateCodeEnum.FTP_SEND_01.getValue());
|
||||||
|
sendFileMsg.setRequestId(SourceOperateCodeEnum.FTP_SEND_01.getValue());
|
||||||
|
|
||||||
|
// 组装业务数据
|
||||||
|
JSONObject data = new JSONObject();
|
||||||
|
if (testFTPConnection(devIp, devPort, devName, devPsd)) {
|
||||||
|
data.set("name", devName);
|
||||||
|
data.set("password", devPsd);
|
||||||
|
data.set("port", devPort);
|
||||||
|
data.set("path", "ftp://" + devIp + devPath);
|
||||||
|
} else if (testFTPConnection(devIp, gcDevPort, gcDevName, gcDevPsd)) {
|
||||||
|
data.set("name", gcDevName);
|
||||||
|
data.set("password", gcDevPsd);
|
||||||
|
data.set("port", gcDevPort);
|
||||||
|
data.set("path", "ftp://" + devIp + gcDevPath);
|
||||||
|
} else {
|
||||||
|
throw new BusinessException(ReportResponseEnum.FTP_CONNECTION_FAILED);
|
||||||
|
}
|
||||||
|
data.set("file", base64String);
|
||||||
|
sendFileMsg.setData(data.toString());
|
||||||
|
String msg = JSON.toJSONString(sendFileMsg);
|
||||||
|
Channel channel = SocketManager.getChannelByUserId("cdf" + DetectionCommunicateConstant.DEV);
|
||||||
|
if (Objects.isNull(channel) || !channel.isActive()) {
|
||||||
|
// 进行源通信连接
|
||||||
|
PreDetectionParam preDetectionParam = new PreDetectionParam();
|
||||||
|
preDetectionParam.setUserPageId("cdf");
|
||||||
|
preDetectionParam.setSendWebMsg(false);
|
||||||
|
|
||||||
|
NettyClient.socketClient(ip, port, preDetectionParam, msg, new NettyDevClientHandler(preDetectionParam, socketDevResponseService));
|
||||||
|
} else {
|
||||||
|
channel.writeAndFlush(msg + "\n");
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
// 进行日志记录入口
|
||||||
|
System.out.println("异常为:" + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 测试FTP连接
|
* 测试FTP连接
|
||||||
*
|
*
|
||||||
@@ -682,83 +758,6 @@ public class PqReportServiceImpl extends ServiceImpl<PqReportMapper, PqReport> i
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 处理检测报告上传云服务器并生成二维码下装到装置
|
|
||||||
* 做成异步执行
|
|
||||||
*
|
|
||||||
* @param devIp 设备IP
|
|
||||||
* @param reportFullPath 检测报告本地全路径
|
|
||||||
* @param reportName 检测报告名称
|
|
||||||
*/
|
|
||||||
public void sendReportToCloud(String devIp, String reportFullPath, String reportName) {
|
|
||||||
// 将文件上传至目标服务器
|
|
||||||
File file = new File(reportFullPath);
|
|
||||||
try {
|
|
||||||
ResponseEntity<String> responseEntity = restTemplateUtil.uploadFile(cloudUrl + "/upload", file);
|
|
||||||
if (responseEntity.getStatusCode().is2xxSuccessful()) {
|
|
||||||
// 上传没问题后,拼接url生成二维码,并将二维码转为bin格式文件传递给设备通讯模块
|
|
||||||
String qrUrl = cloudUrl + "/download/" + reportName;
|
|
||||||
BufferedImage bufferedImage = QrCodeUtil.generate(qrUrl, 148, 148);
|
|
||||||
// 将 BufferedImage 转换为单色图像
|
|
||||||
BufferedImage monoImage = new BufferedImage(148, 148, BufferedImage.TYPE_BYTE_BINARY);
|
|
||||||
Graphics2D g2d = monoImage.createGraphics();
|
|
||||||
g2d.drawImage(bufferedImage, 0, 0, null);
|
|
||||||
g2d.dispose();
|
|
||||||
// 3. 【关键修正】创建一个新的1-bit单色图像,并将原始图像绘制上去,以强制转换为单色位图
|
|
||||||
BufferedImage monochromeImage = new BufferedImage(bufferedImage.getWidth(), bufferedImage.getHeight(), BufferedImage.TYPE_BYTE_BINARY);
|
|
||||||
monochromeImage.getGraphics().drawImage(bufferedImage, 0, 0, null);
|
|
||||||
// 4. 将单色图像在内存中编码为完整的BMP文件流
|
|
||||||
byte[] finalBinData = ImageConverter.convertToBinFormat(bufferedImage);
|
|
||||||
String base64String = Base64.getEncoder().encodeToString(finalBinData);
|
|
||||||
|
|
||||||
// 测试ftp是否连接成功
|
|
||||||
|
|
||||||
|
|
||||||
// 组装设备通讯模块的参数
|
|
||||||
SocketMsg<String> sendFileMsg = new SocketMsg<>();
|
|
||||||
sendFileMsg.setOperateCode(SourceOperateCodeEnum.FTP_SEND_01.getValue());
|
|
||||||
sendFileMsg.setRequestId(SourceOperateCodeEnum.FTP_SEND_01.getValue());
|
|
||||||
|
|
||||||
// 组装业务数据
|
|
||||||
JSONObject data = new JSONObject();
|
|
||||||
if (testFTPConnection(cloudUrl, devPort, devName, devPsd)) {
|
|
||||||
data.set("name", devName);
|
|
||||||
data.set("password", devPsd);
|
|
||||||
data.set("port", devPort);
|
|
||||||
data.set("path", "ftp://" + devIp + devPath);
|
|
||||||
} else if (testFTPConnection(cloudUrl, gcDevPort, gcDevName, gcDevPsd)) {
|
|
||||||
data.set("name", gcDevName);
|
|
||||||
data.set("password", gcDevPsd);
|
|
||||||
data.set("port", gcDevPort);
|
|
||||||
data.set("path", "ftp://" + devIp + gcDevPath);
|
|
||||||
} else {
|
|
||||||
throw new BusinessException(ReportResponseEnum.FTP_CONNECTION_FAILED);
|
|
||||||
}
|
|
||||||
data.set("file", base64String);
|
|
||||||
sendFileMsg.setData(data.toString());
|
|
||||||
String msg = JSON.toJSONString(sendFileMsg);
|
|
||||||
Channel channel = SocketManager.getChannelByUserId("cdf" + DetectionCommunicateConstant.DEV);
|
|
||||||
if (Objects.isNull(channel) || !channel.isActive()) {
|
|
||||||
// 进行源通信连接
|
|
||||||
PreDetectionParam preDetectionParam = new PreDetectionParam();
|
|
||||||
preDetectionParam.setUserPageId("cdf");
|
|
||||||
preDetectionParam.setSendWebMsg(false);
|
|
||||||
|
|
||||||
NettyClient.socketClient(ip, port, preDetectionParam, msg, new NettyDevClientHandler(preDetectionParam, socketDevResponseService));
|
|
||||||
} else {
|
|
||||||
channel.writeAndFlush(msg + "\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
// 进行日志记录入口
|
|
||||||
System.out.println("异常为:" + e.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据计划绑定的报告模板生成报告
|
* 根据计划绑定的报告模板生成报告
|
||||||
* 注:该方法目前属于同用信息占位符替换,数据页为面向对象动态填充拼凑方式
|
* 注:该方法目前属于同用信息占位符替换,数据页为面向对象动态填充拼凑方式
|
||||||
@@ -1748,5 +1747,62 @@ public class PqReportServiceImpl extends ServiceImpl<PqReportMapper, PqReport> i
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uploadReportToCloud(List<String> deviceIds) {
|
||||||
|
log.info("开始批量上传检测报告到云端,设备ID列表:{}", deviceIds);
|
||||||
|
|
||||||
|
// 查询条件:报告状态为已生成(1)的设备
|
||||||
|
LambdaQueryWrapper<PqDev> wrapper = new LambdaQueryWrapper<>();
|
||||||
|
wrapper.eq(PqDev::getReportState, DevReportStateEnum.GENERATED.getValue());
|
||||||
|
|
||||||
|
// 如果指定了设备ID列表,则只查询这些设备
|
||||||
|
if (CollUtil.isNotEmpty(deviceIds)) {
|
||||||
|
wrapper.in(PqDev::getId, deviceIds);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<PqDev> devices = iPqDevService.list(wrapper);
|
||||||
|
|
||||||
|
if (CollUtil.isEmpty(devices)) {
|
||||||
|
log.warn("未找到符合条件的设备,无需上传");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
log.info("找到{}台设备需要上传报告", devices.size());
|
||||||
|
String dirPath = reportPath;
|
||||||
|
// 确保目录存在
|
||||||
|
ensureDirectoryExists(dirPath);
|
||||||
|
// 异步批量上传每台设备的报告
|
||||||
|
CompletableFuture.runAsync(() -> {
|
||||||
|
for (PqDev device : devices) {
|
||||||
|
try {
|
||||||
|
// 构建报告文件路径
|
||||||
|
String fileName = device.getCreateId() + ".docx";
|
||||||
|
String reportFullPath = dirPath.concat(File.separator).concat(device.getCreateId()).concat(".docx");
|
||||||
|
File reportFile = new File(reportFullPath);
|
||||||
|
|
||||||
|
if (!reportFile.exists()) {
|
||||||
|
log.warn("设备{}的报告文件不存在:{}", device.getId(), fileName);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 上传文件到云端
|
||||||
|
ResponseEntity<String> responseEntity = restTemplateUtil.uploadFile(cloudUrl + "/upload", reportFile);
|
||||||
|
|
||||||
|
if (responseEntity.getStatusCode().is2xxSuccessful()) {
|
||||||
|
// 更新设备报告状态为已生成且已上传
|
||||||
|
iPqDevService.updatePqDevReportState(device.getId(), DevReportStateEnum.GENERATED_UPLOADED.getValue());
|
||||||
|
log.info("设备{}报告上传成功", device.getId());
|
||||||
|
} else {
|
||||||
|
log.error("设备{}报告上传失败,HTTP状态码:{}", device.getId(), responseEntity.getStatusCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("设备{}报告上传异常", device.getId(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
log.info("批量上传任务完成");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ spring:
|
|||||||
datasource:
|
datasource:
|
||||||
druid:
|
druid:
|
||||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||||
url: jdbc:mysql://192.168.1.24:13306/pqs91003?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
|
url: jdbc:mysql://192.168.1.24:13306/pqs9100_2f?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
|
||||||
username: root
|
username: root
|
||||||
password: njcnpqs
|
password: njcnpqs
|
||||||
# url: jdbc:mysql://localhost:3306/pqs91001?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=CTT
|
# url: jdbc:mysql://localhost:3306/pqs91001?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=CTT
|
||||||
|
|||||||
BIN
entrance/src/main/resources/model/NPQS-580.docx
Normal file
BIN
entrance/src/main/resources/model/NPQS-580.docx
Normal file
Binary file not shown.
BIN
entrance/src/main/resources/model/NPQS680.docx
Normal file
BIN
entrance/src/main/resources/model/NPQS680.docx
Normal file
Binary file not shown.
BIN
entrance/src/main/resources/model/PQV-700.docx
Normal file
BIN
entrance/src/main/resources/model/PQV-700.docx
Normal file
Binary file not shown.
@@ -38,6 +38,7 @@
|
|||||||
PQ_SUBVOLTAGE.name busBarName,
|
PQ_SUBVOLTAGE.name busBarName,
|
||||||
pq_device.dev_index devId,
|
pq_device.dev_index devId,
|
||||||
pq_device.name devName,
|
pq_device.name devName,
|
||||||
|
pq_device.Status runFlag,
|
||||||
PQ_SUBSTATION.sub_index stationId,
|
PQ_SUBSTATION.sub_index stationId,
|
||||||
PQ_SUBSTATION.name stationName
|
PQ_SUBSTATION.name stationName
|
||||||
from
|
from
|
||||||
|
|||||||
@@ -23,5 +23,6 @@ public class DeviceDTO {
|
|||||||
private LocalDateTime updateTime;
|
private LocalDateTime updateTime;
|
||||||
private String devFlag;
|
private String devFlag;
|
||||||
private String ip;
|
private String ip;
|
||||||
|
//通讯状态
|
||||||
private Integer runFlag=0;
|
private Integer runFlag=0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,7 +27,8 @@ public class LedgerBaseInfoDTO {
|
|||||||
private Integer stationId;
|
private Integer stationId;
|
||||||
|
|
||||||
private String stationName;
|
private String stationName;
|
||||||
|
//通讯状态
|
||||||
|
private Integer runFlag=0;
|
||||||
|
|
||||||
private Integer runFlag=0;;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,6 +57,15 @@ public class LargeScreenCountController extends BaseController {
|
|||||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
||||||
}
|
}
|
||||||
@OperateInfo
|
@OperateInfo
|
||||||
|
@PostMapping("/alarmAnalysisDetail")
|
||||||
|
@ApiOperation("告警统计分析详情")
|
||||||
|
@ApiImplicitParam(name = "largeScreenCountParam", value = "查询参数", required = true)
|
||||||
|
public HttpResult<AlarmAnalysisVO> alarmAnalysisDetail(@RequestBody LargeScreenCountParam largeScreenCountParam) {
|
||||||
|
String methodDescribe = getMethodDescribe("alarmAnalysisDetail");
|
||||||
|
AlarmAnalysisVO result = largeScreenCountService.alarmAnalysisDetail(largeScreenCountParam);
|
||||||
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
||||||
|
}
|
||||||
|
@OperateInfo
|
||||||
@PostMapping("/eventTrend")
|
@PostMapping("/eventTrend")
|
||||||
@ApiOperation("暂降事件趋势")
|
@ApiOperation("暂降事件趋势")
|
||||||
@ApiImplicitParam(name = "largeScreenCountParam", value = "查询参数", required = true)
|
@ApiImplicitParam(name = "largeScreenCountParam", value = "查询参数", required = true)
|
||||||
|
|||||||
@@ -41,5 +41,5 @@ public interface LargeScreenCountService {
|
|||||||
boolean msgHandle(MessageEventFeedbackParam messageEventFeedbackParam);
|
boolean msgHandle(MessageEventFeedbackParam messageEventFeedbackParam);
|
||||||
|
|
||||||
|
|
||||||
|
AlarmAnalysisVO alarmAnalysisDetail(LargeScreenCountParam largeScreenCountParam);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,12 @@
|
|||||||
package com.njcn.gather.event.transientes.service;
|
package com.njcn.gather.event.transientes.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.njcn.gather.event.devcie.pojo.dto.LedgerBaseInfoDTO;
|
||||||
import com.njcn.gather.event.transientes.pojo.po.MsgEventInfo;
|
import com.njcn.gather.event.transientes.pojo.po.MsgEventInfo;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public interface MsgEventInfoService extends IService<MsgEventInfo> {
|
public interface MsgEventInfoService extends IService<MsgEventInfo> {
|
||||||
|
|
||||||
|
List<MsgEventInfo> getMsgByIds(List<String> ids);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -125,7 +125,8 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
|
|||||||
long runDevCount = runDevList.stream().count();
|
long runDevCount = runDevList.stream().count();
|
||||||
List<Integer> runSubList = list.stream().map(PqDevice::getSubIndex).distinct().collect(Collectors.toList());
|
List<Integer> runSubList = list.stream().map(PqDevice::getSubIndex).distinct().collect(Collectors.toList());
|
||||||
long runSubCount = runSubList.stream().count();
|
long runSubCount = runSubList.stream().count();
|
||||||
List<Integer> runLineList = pqLineList.stream().filter(temp->runDevList.contains(temp.getDevIndex())).map(PqLine::getLineIndex).collect(Collectors.toList());
|
List<LedgerBaseInfoDTO> ledgerBaseInfoDTOS = pqLineService.getBaseLineInfo(allLineIds);
|
||||||
|
List<Integer> runLineList = ledgerBaseInfoDTOS.stream().filter(temp->Objects.equals(temp.getRunFlag(),1)).map(LedgerBaseInfoDTO::getLineId).collect(Collectors.toList());
|
||||||
|
|
||||||
long runLineCount = runLineList.stream().count();
|
long runLineCount = runLineList.stream().count();
|
||||||
|
|
||||||
@@ -138,7 +139,6 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
|
|||||||
ledgerCountVO.setRunSubCount(runSubCount);
|
ledgerCountVO.setRunSubCount(runSubCount);
|
||||||
ledgerCountVO.setRunLineCount(runLineCount);
|
ledgerCountVO.setRunLineCount(runLineCount);
|
||||||
|
|
||||||
List<LedgerBaseInfoDTO> ledgerBaseInfoDTOS = pqLineService.getBaseLineInfo(allLineIds);
|
|
||||||
ledgerBaseInfoDTOS.stream().forEach(temp->temp.setRunFlag(runLineList.contains(temp.getLineId())?1:0));
|
ledgerBaseInfoDTOS.stream().forEach(temp->temp.setRunFlag(runLineList.contains(temp.getLineId())?1:0));
|
||||||
ledgerCountVO.setAllLineList(ledgerBaseInfoDTOS);
|
ledgerCountVO.setAllLineList(ledgerBaseInfoDTOS);
|
||||||
List<DeviceDTO> deviceDTOS = pqDeviceService.queryListByIds(devList);
|
List<DeviceDTO> deviceDTOS = pqDeviceService.queryListByIds(devList);
|
||||||
@@ -205,25 +205,12 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
|
|||||||
Integer eventCount = eventdetails.size();
|
Integer eventCount = eventdetails.size();
|
||||||
// 告警
|
// 告警
|
||||||
List<PqsEventdetail> aLarmEvent = eventdetails.stream().filter(temp -> temp.getEventvalue() < 0.5).collect(Collectors.toList());
|
List<PqsEventdetail> aLarmEvent = eventdetails.stream().filter(temp -> temp.getEventvalue() < 0.5).collect(Collectors.toList());
|
||||||
aLarmEvent.forEach(temp->temp.setEventSeverity(1));
|
|
||||||
// 预警
|
// 预警
|
||||||
List<PqsEventdetail> warnEvent = eventdetails.stream().filter(temp -> temp.getEventvalue() >= 0.5&& temp.getEventvalue() <0.9).collect(Collectors.toList());
|
List<PqsEventdetail> warnEvent = eventdetails.stream().filter(temp -> temp.getEventvalue() >= 0.5&& temp.getEventvalue() <0.9).collect(Collectors.toList());
|
||||||
warnEvent.forEach(temp->temp.setEventSeverity(2));
|
|
||||||
List<String> eventIds = eventdetails.stream().map(PqsEventdetail::getEventdetailIndex).collect(Collectors.toList());
|
List<String> eventIds = eventdetails.stream().map(PqsEventdetail::getEventdetailIndex).collect(Collectors.toList());
|
||||||
//通知
|
//通知
|
||||||
List<MsgEventInfo> msgEventInfoList = new ArrayList<>();
|
|
||||||
if(!CollectionUtils.isEmpty(eventIds)){
|
List<MsgEventInfo> msgEventInfoList =msgEventInfoService.getMsgByIds(eventIds);
|
||||||
if(eventIds.size()>1000){
|
|
||||||
List<List<String>> listEven = CollUtil.split(eventIds,1000);
|
|
||||||
for(List<String> pList: listEven){
|
|
||||||
List<MsgEventInfo> temp = msgEventInfoService.lambdaQuery().in(MsgEventInfo::getEventIndex,pList).list();
|
|
||||||
msgEventInfoList.addAll(temp);
|
|
||||||
}
|
|
||||||
}else {
|
|
||||||
List<MsgEventInfo> temp = msgEventInfoService.lambdaQuery().in(MsgEventInfo::getEventIndex,eventIds).list();
|
|
||||||
msgEventInfoList.addAll(temp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
msgEventInfoList = msgEventInfoList.stream().sorted(Comparator.comparing(MsgEventInfo::getSendTime,Comparator.reverseOrder())).collect(Collectors.toList());
|
msgEventInfoList = msgEventInfoList.stream().sorted(Comparator.comparing(MsgEventInfo::getSendTime,Comparator.reverseOrder())).collect(Collectors.toList());
|
||||||
|
|
||||||
|
|
||||||
@@ -247,14 +234,14 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
|
|||||||
alarmAnalysisVO.setLookWarnCount(lookWarnCount);
|
alarmAnalysisVO.setLookWarnCount(lookWarnCount);
|
||||||
alarmAnalysisVO.setLookNoticeCount(lookNoticeCount);
|
alarmAnalysisVO.setLookNoticeCount(lookNoticeCount);
|
||||||
|
|
||||||
|
//
|
||||||
alarmAnalysisVO.setEventdetails(change(eventdetails,msgEventInfoList));
|
// alarmAnalysisVO.setEventdetails(change(eventdetails,msgEventInfoList));
|
||||||
alarmAnalysisVO.setALarmEvent(change(aLarmEvent,msgEventInfoList));
|
// alarmAnalysisVO.setALarmEvent(change(aLarmEvent,msgEventInfoList));
|
||||||
alarmAnalysisVO.setWarnEvent(change(warnEvent,msgEventInfoList));
|
// alarmAnalysisVO.setWarnEvent(change(warnEvent,msgEventInfoList));
|
||||||
alarmAnalysisVO.setNoticeEvent(msgEventInfoList);
|
// alarmAnalysisVO.setNoticeEvent(msgEventInfoList);
|
||||||
alarmAnalysisVO.setLookALarmEvent(change(lookALarmEvent,msgEventInfoList));
|
// alarmAnalysisVO.setLookALarmEvent(change(lookALarmEvent,msgEventInfoList));
|
||||||
alarmAnalysisVO.setLookWarnEvent(change(lookWarnEvent,msgEventInfoList));
|
// alarmAnalysisVO.setLookWarnEvent(change(lookWarnEvent,msgEventInfoList));
|
||||||
alarmAnalysisVO.setLookNoticeEvent(handleMsg);
|
// alarmAnalysisVO.setLookNoticeEvent(handleMsg);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -314,20 +301,7 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
|
|||||||
if (Objects.equals(largeScreenCountParam.getEventtype(), 1)) {
|
if (Objects.equals(largeScreenCountParam.getEventtype(), 1)) {
|
||||||
List<String> eventIds = eventdetails.stream().map(PqsEventdetail::getEventdetailIndex).collect(Collectors.toList());
|
List<String> eventIds = eventdetails.stream().map(PqsEventdetail::getEventdetailIndex).collect(Collectors.toList());
|
||||||
//通知
|
//通知
|
||||||
List<MsgEventInfo> msgEventInfoList = new ArrayList<>();
|
List<MsgEventInfo> msgEventInfoList =msgEventInfoService.getMsgByIds(eventIds);
|
||||||
if(!CollectionUtils.isEmpty(eventIds)){
|
|
||||||
if(eventIds.size()>1000){
|
|
||||||
List<List<String>> listEven = CollUtil.split(eventIds,1000);
|
|
||||||
for(List<String> pList: listEven){
|
|
||||||
List<MsgEventInfo> temp = msgEventInfoService.lambdaQuery().in(MsgEventInfo::getEventIndex,pList).list();
|
|
||||||
msgEventInfoList.addAll(temp);
|
|
||||||
}
|
|
||||||
}else {
|
|
||||||
List<MsgEventInfo> temp = msgEventInfoService.lambdaQuery().in(MsgEventInfo::getEventIndex,eventIds).list();
|
|
||||||
msgEventInfoList.addAll(temp);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
// 使用 for 循环处理日期范围
|
// 使用 for 循环处理日期范围
|
||||||
for (LocalDate date = startDate; !date.isAfter(endDate); date = date.plusDays(1)) {
|
for (LocalDate date = startDate; !date.isAfter(endDate); date = date.plusDays(1)) {
|
||||||
EventTrendVO eventTrendVO = new EventTrendVO();
|
EventTrendVO eventTrendVO = new EventTrendVO();
|
||||||
@@ -613,7 +587,8 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
|
|||||||
List<String> eveIdndex = eventdetails.stream().map(PqsEventdetail::getEventdetailIndex).collect(Collectors.toList());
|
List<String> eveIdndex = eventdetails.stream().map(PqsEventdetail::getEventdetailIndex).collect(Collectors.toList());
|
||||||
List<MsgEventInfo> temp = new ArrayList<>();
|
List<MsgEventInfo> temp = new ArrayList<>();
|
||||||
if(!CollectionUtils.isEmpty(eveIdndex)){
|
if(!CollectionUtils.isEmpty(eveIdndex)){
|
||||||
temp = msgEventInfoService.lambdaQuery().in(MsgEventInfo::getEventIndex,eveIdndex).list();
|
temp =msgEventInfoService.getMsgByIds(eveIdndex);
|
||||||
|
|
||||||
}
|
}
|
||||||
List<EventDetailVO> change = change(eventdetails,temp);
|
List<EventDetailVO> change = change(eventdetails,temp);
|
||||||
|
|
||||||
@@ -670,16 +645,7 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
List<String> eventIds = allEventList.stream().map(PqsEventdetail::getEventdetailIndex).collect(Collectors.toList());
|
List<String> eventIds = allEventList.stream().map(PqsEventdetail::getEventdetailIndex).collect(Collectors.toList());
|
||||||
if (eventIds.size() > 1000) {
|
result =msgEventInfoService.getMsgByIds(eventIds);
|
||||||
List<List<String>> listEven = CollUtil.split(eventIds, 1000);
|
|
||||||
for (List<String> pList : listEven) {
|
|
||||||
List<MsgEventInfo> msgEventInfoList = msgEventInfoService.lambdaQuery().in(MsgEventInfo::getEventIndex, pList).list();
|
|
||||||
result.addAll(msgEventInfoList);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
List<MsgEventInfo> msgEventInfoList = msgEventInfoService.lambdaQuery().in(MsgEventInfo::getEventIndex, eventIds).list();
|
|
||||||
result.addAll(msgEventInfoList);
|
|
||||||
}
|
|
||||||
result = result.stream().sorted(Comparator.comparing(MsgEventInfo::getSendTime, Comparator.reverseOrder())).collect(Collectors.toList());
|
result = result.stream().sorted(Comparator.comparing(MsgEventInfo::getSendTime, Comparator.reverseOrder())).collect(Collectors.toList());
|
||||||
if (result.size() > 200) {
|
if (result.size() > 200) {
|
||||||
result = result.subList(0, 200);
|
result = result.subList(0, 200);
|
||||||
@@ -719,6 +685,103 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AlarmAnalysisVO alarmAnalysisDetail(LargeScreenCountParam largeScreenCountParam) {
|
||||||
|
AlarmAnalysisVO alarmAnalysisVO = new AlarmAnalysisVO();
|
||||||
|
//起始时间
|
||||||
|
LocalDateTime startTime;
|
||||||
|
//结束时间
|
||||||
|
LocalDateTime endTime;
|
||||||
|
if (largeScreenCountParam.getType() == 3) {
|
||||||
|
//起始时间
|
||||||
|
startTime = LocalDateTimeUtil.parse(DateUtil.format(DateUtil.beginOfMonth(new Date()), DatePattern.NORM_DATETIME_FORMATTER), DatePattern.NORM_DATETIME_FORMATTER);
|
||||||
|
//结束时间
|
||||||
|
endTime = LocalDateTimeUtil.parse(DateUtil.format(DateUtil.endOfMonth(new Date()), DatePattern.NORM_DATETIME_FORMATTER), DatePattern.NORM_DATETIME_FORMATTER);
|
||||||
|
} else if (largeScreenCountParam.getType() == 4) {
|
||||||
|
//起始时间
|
||||||
|
startTime = LocalDateTimeUtil.parse(DateUtil.format(DateUtil.beginOfWeek(new Date()), DatePattern.NORM_DATETIME_FORMATTER), DatePattern.NORM_DATETIME_FORMATTER);
|
||||||
|
//结束时间
|
||||||
|
endTime = LocalDateTimeUtil.parse(DateUtil.format(DateUtil.endOfWeek(new Date()), DatePattern.NORM_DATETIME_FORMATTER), DatePattern.NORM_DATETIME_FORMATTER);
|
||||||
|
} else {
|
||||||
|
throw new BusinessException("统计类型有误类型");
|
||||||
|
}
|
||||||
|
|
||||||
|
//根据用户获取当前部门及子部门id
|
||||||
|
List<String> deptAndChildren = pqsDeptsService.findDeptAndChildren(largeScreenCountParam.getDeptId());
|
||||||
|
//获取对应监测点id
|
||||||
|
List<PqsDeptsline> deptslines = pqsDeptslineService.lambdaQuery().in(PqsDeptsline::getDeptsIndex, deptAndChildren).eq(PqsDeptsline::getSystype, sysTypeZt).list();
|
||||||
|
List<Integer> deptslineIds = deptslines.stream().map(PqsDeptsline::getLineIndex).collect(Collectors.toList());
|
||||||
|
if (CollectionUtils.isEmpty(deptslineIds)) {
|
||||||
|
throw new BusinessException("部门下暂无监测点");
|
||||||
|
|
||||||
|
}
|
||||||
|
List<PqsEventdetail> eventdetails = new ArrayList<>();
|
||||||
|
if(deptslineIds.size()>1000){
|
||||||
|
List<List<Integer>> listIds = CollUtil.split(deptslineIds,1000);
|
||||||
|
for(List<Integer> itemIds : listIds){
|
||||||
|
List<PqsEventdetail> temp = pqsEventdetailService.lambdaQuery()
|
||||||
|
.between(PqsEventdetail::getTimeid,startTime, endTime)
|
||||||
|
.in(PqsEventdetail::getWavetype,msgEventConfigService.getEventType())
|
||||||
|
.in(PqsEventdetail::getLineid,listIds)
|
||||||
|
.orderByDesc(PqsEventdetail::getTimeid).list()
|
||||||
|
;
|
||||||
|
eventdetails.addAll(temp);
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
List<PqsEventdetail> temp = pqsEventdetailService.lambdaQuery()
|
||||||
|
.between(PqsEventdetail::getTimeid, startTime, endTime)
|
||||||
|
.in(PqsEventdetail::getWavetype,msgEventConfigService.getEventType())
|
||||||
|
.in(PqsEventdetail::getLineid,deptslineIds)
|
||||||
|
.orderByDesc(PqsEventdetail::getTimeid).list();
|
||||||
|
eventdetails.addAll(temp);
|
||||||
|
}
|
||||||
|
|
||||||
|
Integer eventCount = eventdetails.size();
|
||||||
|
// 告警
|
||||||
|
List<PqsEventdetail> aLarmEvent = eventdetails.stream().filter(temp -> temp.getEventvalue() < 0.5).collect(Collectors.toList());
|
||||||
|
// 预警
|
||||||
|
List<PqsEventdetail> warnEvent = eventdetails.stream().filter(temp -> temp.getEventvalue() >= 0.5&& temp.getEventvalue() <0.9).collect(Collectors.toList());
|
||||||
|
List<String> eventIds = eventdetails.stream().map(PqsEventdetail::getEventdetailIndex).collect(Collectors.toList());
|
||||||
|
//通知
|
||||||
|
List<MsgEventInfo> msgEventInfoList =msgEventInfoService.getMsgByIds(eventIds);
|
||||||
|
|
||||||
|
msgEventInfoList = msgEventInfoList.stream().sorted(Comparator.comparing(MsgEventInfo::getSendTime,Comparator.reverseOrder())).collect(Collectors.toList());
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
List<PqsEventdetail> lookALarmEvent = aLarmEvent.stream().filter(temp ->Objects.equals(temp.getLookFlag(),1 )).collect(Collectors.toList());
|
||||||
|
List<PqsEventdetail> lookWarnEvent = warnEvent.stream().filter(temp ->Objects.equals(temp.getLookFlag(),1 ) ).collect(Collectors.toList());
|
||||||
|
List<MsgEventInfo> handleMsg = msgEventInfoList.stream().filter(temp -> Objects.equals(temp.getIsHandle(), 1)).collect(Collectors.toList());
|
||||||
|
|
||||||
|
Integer aLarmCount =aLarmEvent.size();
|
||||||
|
Integer warnCount =warnEvent.size();
|
||||||
|
Integer noticeCount =msgEventInfoList.size();
|
||||||
|
Integer lookALarmCount =lookALarmEvent.size();
|
||||||
|
Integer lookWarnCount =lookWarnEvent.size();
|
||||||
|
Integer lookNoticeCount =handleMsg.size();
|
||||||
|
|
||||||
|
alarmAnalysisVO.setEventCount(eventCount);
|
||||||
|
alarmAnalysisVO.setALarmCount(aLarmCount);
|
||||||
|
alarmAnalysisVO.setWarnCount(warnCount);
|
||||||
|
alarmAnalysisVO.setNoticeCount(noticeCount);
|
||||||
|
alarmAnalysisVO.setLookALarmCount(lookALarmCount);
|
||||||
|
alarmAnalysisVO.setLookWarnCount(lookWarnCount);
|
||||||
|
alarmAnalysisVO.setLookNoticeCount(lookNoticeCount);
|
||||||
|
|
||||||
|
|
||||||
|
alarmAnalysisVO.setEventdetails(change(eventdetails,msgEventInfoList));
|
||||||
|
alarmAnalysisVO.setALarmEvent(change(aLarmEvent,msgEventInfoList));
|
||||||
|
alarmAnalysisVO.setWarnEvent(change(warnEvent,msgEventInfoList));
|
||||||
|
alarmAnalysisVO.setNoticeEvent(msgEventInfoList);
|
||||||
|
alarmAnalysisVO.setLookALarmEvent(change(lookALarmEvent,msgEventInfoList));
|
||||||
|
alarmAnalysisVO.setLookWarnEvent(change(lookWarnEvent,msgEventInfoList));
|
||||||
|
alarmAnalysisVO.setLookNoticeEvent(handleMsg);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return alarmAnalysisVO;
|
||||||
|
}
|
||||||
|
|
||||||
private List<EventDetailVO> change(List<PqsEventdetail> list,List<MsgEventInfo> handleMsg){
|
private List<EventDetailVO> change(List<PqsEventdetail> list,List<MsgEventInfo> handleMsg){
|
||||||
List<EventDetailVO> result = new ArrayList<>();
|
List<EventDetailVO> result = new ArrayList<>();
|
||||||
if(CollectionUtils.isEmpty(list)){
|
if(CollectionUtils.isEmpty(list)){
|
||||||
@@ -740,10 +803,11 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
|
|||||||
eventDetailVO.setEventvalue(temp.getEventvalue());
|
eventDetailVO.setEventvalue(temp.getEventvalue());
|
||||||
eventDetailVO.setLookFlag(temp.getLookFlag());
|
eventDetailVO.setLookFlag(temp.getLookFlag());
|
||||||
eventDetailVO.setNoticeFlag(temp.getNoticeFlag());
|
eventDetailVO.setNoticeFlag(temp.getNoticeFlag());
|
||||||
if(Objects.nonNull(temp.getEventSeverity())){
|
if( temp.getEventvalue()< 0.5){
|
||||||
eventDetailVO.setEventSeverity(temp.getEventSeverity());
|
eventDetailVO.setEventSeverity(1);
|
||||||
|
}else{
|
||||||
|
eventDetailVO.setEventSeverity(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
eventDetailVO.setMsgEventInfoSize(handleMsg.stream().filter(msg->Objects.equals(msg.getEventIndex(),temp.getEventdetailIndex())).count());
|
eventDetailVO.setMsgEventInfoSize(handleMsg.stream().filter(msg->Objects.equals(msg.getEventIndex(),temp.getEventdetailIndex())).count());
|
||||||
if(ledgerBaseInfoDTOMap.containsKey(temp.getLineid())){
|
if(ledgerBaseInfoDTOMap.containsKey(temp.getLineid())){
|
||||||
LedgerBaseInfoDTO ledgerBaseInfoDTO = ledgerBaseInfoDTOMap.get(temp.getLineid());
|
LedgerBaseInfoDTO ledgerBaseInfoDTO = ledgerBaseInfoDTOMap.get(temp.getLineid());
|
||||||
|
|||||||
@@ -1,10 +1,15 @@
|
|||||||
package com.njcn.gather.event.transientes.service.impl;
|
package com.njcn.gather.event.transientes.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.njcn.gather.event.transientes.mapper.MsgEventInfoMapper;
|
import com.njcn.gather.event.transientes.mapper.MsgEventInfoMapper;
|
||||||
import com.njcn.gather.event.transientes.pojo.po.MsgEventInfo;
|
import com.njcn.gather.event.transientes.pojo.po.MsgEventInfo;
|
||||||
import com.njcn.gather.event.transientes.service.MsgEventInfoService;
|
import com.njcn.gather.event.transientes.service.MsgEventInfoService;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author: cdf
|
* @Author: cdf
|
||||||
@@ -13,4 +18,22 @@ import org.springframework.stereotype.Service;
|
|||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
public class MsgEventInfoServiceImpl extends ServiceImpl<MsgEventInfoMapper, MsgEventInfo> implements MsgEventInfoService {
|
public class MsgEventInfoServiceImpl extends ServiceImpl<MsgEventInfoMapper, MsgEventInfo> implements MsgEventInfoService {
|
||||||
|
@Override
|
||||||
|
public List<MsgEventInfo> getMsgByIds(List<String> ids) {
|
||||||
|
//通知
|
||||||
|
List<MsgEventInfo> msgEventInfoList = new ArrayList<>();
|
||||||
|
if(!CollectionUtils.isEmpty(ids)){
|
||||||
|
if(ids.size()>1000){
|
||||||
|
List<List<String>> listEven = CollUtil.split(ids,1000);
|
||||||
|
for(List<String> pList: listEven){
|
||||||
|
List<MsgEventInfo> temp = this.lambdaQuery().in(MsgEventInfo::getEventIndex,pList).list();
|
||||||
|
msgEventInfoList.addAll(temp);
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
List<MsgEventInfo> temp = this.lambdaQuery().in(MsgEventInfo::getEventIndex,ids).list();
|
||||||
|
msgEventInfoList.addAll(temp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return msgEventInfoList;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user