Compare commits
19 Commits
2025-07
...
bb22857fc9
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bb22857fc9 | ||
|
|
6ef908ff60 | ||
|
|
7461801657 | ||
|
|
4ecec5e6ef | ||
|
|
04a667531b | ||
|
|
a0f6846f53 | ||
|
|
a177d7991c | ||
|
|
f8fb45cf6f | ||
|
|
910069a463 | ||
| 56477157aa | |||
| a6b0509179 | |||
|
|
b5e5286411 | ||
|
|
d01c0e14c0 | ||
|
|
0cf8bbc3d5 | ||
|
|
3a239b5123 | ||
|
|
0eabe977cb | ||
|
|
f1f86ea854 | ||
|
|
e048c92ad1 | ||
|
|
65f46a22f5 |
@@ -1,5 +1,6 @@
|
||||
package com.njcn.gather.detection.handler;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
@@ -1725,6 +1726,9 @@ public class SocketDevResponseService {
|
||||
|
||||
List<PreDetection> pqDevList = iPqDevService.getDevInfo(param.getDevIds());
|
||||
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.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;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.njcn.gather.detection.pojo.enums.SourceOperateCodeEnum;
|
||||
@@ -198,7 +199,7 @@ public class SocketSourceResponseService {
|
||||
phaseSequenceParam.setMoniterIdList(monitorIdList);
|
||||
phaseSequenceParam.setDataType(Arrays.asList("real$VRMS", "real$IRMS"));
|
||||
phaseSequenceParam.setReadCount(3);
|
||||
phaseSequenceParam.setIgnoreCount(4);
|
||||
phaseSequenceParam.setIgnoreCount(8);
|
||||
socketMsg.setData(JSON.toJSONString(phaseSequenceParam));
|
||||
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
|
||||
|
||||
@@ -234,9 +235,9 @@ public class SocketSourceResponseService {
|
||||
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
|
||||
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.put("deviceList", devList);
|
||||
map.put("deviceList", FormalTestManager.devList);
|
||||
String jsonString = JSON.toJSONString(map);
|
||||
socketMsg.setRequestId(SourceOperateCodeEnum.YJC_SBTXJY.getValue());
|
||||
socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_01.getValue());
|
||||
|
||||
@@ -10,6 +10,7 @@ import lombok.Getter;
|
||||
public enum DevReportStateEnum {
|
||||
NOT_GENERATED("未生成", 0),
|
||||
GENERATED("已生成", 1),
|
||||
GENERATED_UPLOADED("已生成且已上传", 3),
|
||||
UNCHECKED("未检", 2);
|
||||
|
||||
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())
|
||||
.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.getReportState()), PqDev::getReportState, param.getReportState())
|
||||
.eq(PqDev::getState, DataStateEnum.ENABLE.getCode())
|
||||
.orderByDesc(PqDev::getCreateTime)
|
||||
|
||||
@@ -156,4 +156,15 @@ public class ReportController extends BaseController {
|
||||
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);
|
||||
|
||||
|
||||
/**
|
||||
* 批量上传检测报告到云端
|
||||
*
|
||||
* @param deviceIds 被检设备ID列表,为空时上传所有已生成报告的设备
|
||||
*/
|
||||
void uploadReportToCloud(List<String> deviceIds);
|
||||
|
||||
}
|
||||
|
||||
@@ -102,6 +102,7 @@ import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.LinkedBlockingQueue;
|
||||
import java.util.concurrent.ThreadPoolExecutor;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
@@ -615,17 +616,30 @@ public class PqReportServiceImpl extends ServiceImpl<PqReportMapper, PqReport> i
|
||||
}
|
||||
out.close();
|
||||
this.updateDevAndPlanState(devReportParam.getDevId(), devReportParam.getPlanId());
|
||||
sendReportToCloud(pqDevVO.getIp(), reportFullPath, pqDevVO.getCreateId() + ".docx");
|
||||
// // 检测报告上云
|
||||
// Future<?> future = executor.submit(() -> {
|
||||
// sendReportToCloud(pqDevVO.getIp(), reportFullPath, pqDevVO.getCreateId() + ".docx");
|
||||
// });
|
||||
// try {
|
||||
// future.get();
|
||||
// } catch (Exception e) {
|
||||
// log.error("检测报告上云异常,异常为:"+e.getMessage());
|
||||
// }
|
||||
|
||||
// 异步将有效的二维码下装到被检设备
|
||||
CompletableFuture.runAsync(() -> {
|
||||
try {
|
||||
sendQrToDevice(pqDevVO.getIp(), pqDevVO.getCreateId() + ".docx");
|
||||
log.info("二维码下装成功,设备IP: {}", pqDevVO.getIp());
|
||||
} catch (Exception e) {
|
||||
log.error("二维码下装失败,设备IP: {}", pqDevVO.getIp(), e);
|
||||
}
|
||||
});
|
||||
// 异步将检测报告上传到云端,但是不一定成功,需要无线网支撑
|
||||
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) {
|
||||
log.error(ReportResponseEnum.GENERATE_REPORT_ERROR.getMessage(), e);
|
||||
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连接
|
||||
*
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 根据计划绑定的报告模板生成报告
|
||||
* 注:该方法目前属于同用信息占位符替换,数据页为面向对象动态填充拼凑方式
|
||||
@@ -1475,7 +1474,12 @@ public class PqReportServiceImpl extends ServiceImpl<PqReportMapper, PqReport> i
|
||||
//String scriptId = adPlan.getScriptId();
|
||||
Integer devChns = pqDevVO.getDevChns();
|
||||
for (int i = 1; i <= devChns; i++) {
|
||||
ClassPathResource resource = new ClassPathResource("/model/report_table.docx");
|
||||
String path = "/model/report_table.docx";
|
||||
DevType devType = devTypeService.getById(pqDevVO.getDevType());
|
||||
if (devType.getName().equals("PQ-COM")) {
|
||||
path = "/model/report_table - PQ-COM.docx";
|
||||
}
|
||||
ClassPathResource resource = new ClassPathResource(path);
|
||||
XWPFDocument dataModelDocumentTemp = new XWPFDocument(resource.getInputStream());
|
||||
|
||||
SingleNonHarmParam singleNonHarmParam = new SingleNonHarmParam();
|
||||
@@ -1503,11 +1507,20 @@ public class PqReportServiceImpl extends ServiceImpl<PqReportMapper, PqReport> i
|
||||
List<AdHarmonicResult> adHarmonicResultList = adHarmonicService.listAllResultData(devReportParam.getScriptId(), devReportParam.getPlanCode(), devReportParam.getDevId() + "_" + i);
|
||||
|
||||
// 填充数据
|
||||
int finalI = i;
|
||||
indexKeysMap.forEach((index, keys) -> {
|
||||
String s1 = keys.stream().findFirst().get();
|
||||
// 谐波类
|
||||
if (DetectionCodeEnum.V2_50.getCode().equals(s1) || DetectionCodeEnum.I2_50.getCode().equals(s1) || DetectionCodeEnum.SV_1_49.getCode().equals(s1) || DetectionCodeEnum.SI_1_49.getCode().equals(s1)) {
|
||||
fillMapValueHarm(adHarmonicResultList, dataModelMap, keys, index);
|
||||
// 查找一下U1
|
||||
double u1 = 57.74;
|
||||
List<AdHarmonicResult> rawData = adHarmonicService.listAllRawData(devReportParam.getScriptId(), devReportParam.getPlanCode(), devReportParam.getDevId() + "_" + finalI);
|
||||
AdHarmonicResult adHarmonicResult = rawData.stream().filter(obj -> obj.getAdType().equals(DetectionCodeEnum.V2_50.getCode())).sorted((obj1, obj2) -> obj2.getTimeId().compareTo(obj1.getTimeId())).findFirst().orElse(null);
|
||||
if (ObjectUtil.isNotNull(adHarmonicResult)) {
|
||||
String aValue1 = adHarmonicResult.getAValue1();
|
||||
u1 = Double.parseDouble(aValue1);
|
||||
}
|
||||
fillMapValueHarm(adHarmonicResultList, dataModelMap, keys, index, u1);
|
||||
} else {
|
||||
// 非谐波类
|
||||
if (DetectionCodeEnum.V_UNBAN.getCode().equals(s1) || DetectionCodeEnum.FREQ.getCode().equals(s1)) {
|
||||
@@ -1575,14 +1588,14 @@ public class PqReportServiceImpl extends ServiceImpl<PqReportMapper, PqReport> i
|
||||
* @param keys
|
||||
* @param index
|
||||
*/
|
||||
private void fillMapValueHarm(List<AdHarmonicResult> allHarmonicResultList, Map<String, String> dataModelMap, Set<String> keys, String index) {
|
||||
private void fillMapValueHarm(List<AdHarmonicResult> allHarmonicResultList, Map<String, String> dataModelMap, Set<String> keys, String index, double baseValue) {
|
||||
keys.forEach(key -> {
|
||||
List<AdHarmonicResult> resultList = allHarmonicResultList.stream().filter(obj -> obj.getAdType().equals(key) && obj.getSort().toString().equals(index)).collect(Collectors.toList());
|
||||
if (CollectionUtil.isNotEmpty(resultList)) {
|
||||
AdHarmonicResult adHarmonicResult = resultList.get(0);
|
||||
if (Objects.nonNull(adHarmonicResult)) {
|
||||
if (DetectionCodeEnum.V2_50.getCode().equals(key) || DetectionCodeEnum.SV_1_49.getCode().equals(key)) {
|
||||
fillHarm(dataModelMap, adHarmonicResult, index, key, 57.74, 100);
|
||||
fillHarm(dataModelMap, adHarmonicResult, index, key, baseValue, 100);
|
||||
}
|
||||
if (DetectionCodeEnum.I2_50.getCode().equals(key) || DetectionCodeEnum.SI_1_49.getCode().equals(key)) {
|
||||
fillHarm(dataModelMap, adHarmonicResult, index, key, 1, 1);
|
||||
@@ -1748,5 +1761,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("批量上传任务完成");
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1015,11 +1015,12 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
|
||||
PqScriptDtls dip = dipList.get(0);
|
||||
dipDataDTO.setFTransValue(dip.getTransValue());
|
||||
if (devFly) {
|
||||
if (isValueType) {
|
||||
// if (isValueType) {
|
||||
dipDataDTO.setFTransValue(dip.getTransValue());
|
||||
} else {
|
||||
dipDataDTO.setFTransValue(NumberUtil.round(dip.getTransValue() / dtls.getValue(), 4).doubleValue());
|
||||
}
|
||||
// }
|
||||
// else {
|
||||
// dipDataDTO.setFTransValue(NumberUtil.round(dip.getTransValue() / dtls.getValue(), 4).doubleValue());
|
||||
// }
|
||||
}
|
||||
// 1.0/频率*持续时间(周波)= 暂态持续时间(s)
|
||||
dipDataDTO.setFRetainTime(NumberUtil.round(1.0 / fFreq * dip.getRetainTime(), 3).doubleValue());
|
||||
|
||||
@@ -6,7 +6,7 @@ spring:
|
||||
datasource:
|
||||
druid:
|
||||
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
|
||||
password: njcnpqs
|
||||
# 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/PQ-COM.docx
Normal file
BIN
entrance/src/main/resources/model/PQ-COM.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.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
entrance/src/main/resources/model/report_table - PQ-COM.docx
Normal file
BIN
entrance/src/main/resources/model/report_table - PQ-COM.docx
Normal file
Binary file not shown.
Binary file not shown.
@@ -38,6 +38,7 @@
|
||||
PQ_SUBVOLTAGE.name busBarName,
|
||||
pq_device.dev_index devId,
|
||||
pq_device.name devName,
|
||||
pq_device.Status runFlag,
|
||||
PQ_SUBSTATION.sub_index stationId,
|
||||
PQ_SUBSTATION.name stationName
|
||||
from
|
||||
|
||||
@@ -23,5 +23,6 @@ public class DeviceDTO {
|
||||
private LocalDateTime updateTime;
|
||||
private String devFlag;
|
||||
private String ip;
|
||||
//通讯状态
|
||||
private Integer runFlag=0;
|
||||
}
|
||||
|
||||
@@ -27,7 +27,8 @@ public class LedgerBaseInfoDTO {
|
||||
private Integer stationId;
|
||||
|
||||
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);
|
||||
}
|
||||
@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")
|
||||
@ApiOperation("暂降事件趋势")
|
||||
@ApiImplicitParam(name = "largeScreenCountParam", value = "查询参数", required = true)
|
||||
|
||||
@@ -41,5 +41,5 @@ public interface LargeScreenCountService {
|
||||
boolean msgHandle(MessageEventFeedbackParam messageEventFeedbackParam);
|
||||
|
||||
|
||||
|
||||
AlarmAnalysisVO alarmAnalysisDetail(LargeScreenCountParam largeScreenCountParam);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
package com.njcn.gather.event.transientes.service;
|
||||
|
||||
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 java.util.List;
|
||||
|
||||
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();
|
||||
List<Integer> runSubList = list.stream().map(PqDevice::getSubIndex).distinct().collect(Collectors.toList());
|
||||
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();
|
||||
|
||||
@@ -138,7 +139,6 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
|
||||
ledgerCountVO.setRunSubCount(runSubCount);
|
||||
ledgerCountVO.setRunLineCount(runLineCount);
|
||||
|
||||
List<LedgerBaseInfoDTO> ledgerBaseInfoDTOS = pqLineService.getBaseLineInfo(allLineIds);
|
||||
ledgerBaseInfoDTOS.stream().forEach(temp->temp.setRunFlag(runLineList.contains(temp.getLineId())?1:0));
|
||||
ledgerCountVO.setAllLineList(ledgerBaseInfoDTOS);
|
||||
List<DeviceDTO> deviceDTOS = pqDeviceService.queryListByIds(devList);
|
||||
@@ -205,25 +205,12 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
|
||||
Integer eventCount = eventdetails.size();
|
||||
// 告警
|
||||
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());
|
||||
warnEvent.forEach(temp->temp.setEventSeverity(2));
|
||||
List<String> eventIds = eventdetails.stream().map(PqsEventdetail::getEventdetailIndex).collect(Collectors.toList());
|
||||
//通知
|
||||
List<MsgEventInfo> msgEventInfoList = new ArrayList<>();
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
List<MsgEventInfo> msgEventInfoList =msgEventInfoService.getMsgByIds(eventIds);
|
||||
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.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);
|
||||
//
|
||||
// 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);
|
||||
|
||||
|
||||
|
||||
@@ -314,20 +301,7 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
|
||||
if (Objects.equals(largeScreenCountParam.getEventtype(), 1)) {
|
||||
List<String> eventIds = eventdetails.stream().map(PqsEventdetail::getEventdetailIndex).collect(Collectors.toList());
|
||||
//通知
|
||||
List<MsgEventInfo> msgEventInfoList = new ArrayList<>();
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
List<MsgEventInfo> msgEventInfoList =msgEventInfoService.getMsgByIds(eventIds);
|
||||
// 使用 for 循环处理日期范围
|
||||
for (LocalDate date = startDate; !date.isAfter(endDate); date = date.plusDays(1)) {
|
||||
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<MsgEventInfo> temp = new ArrayList<>();
|
||||
if(!CollectionUtils.isEmpty(eveIdndex)){
|
||||
temp = msgEventInfoService.lambdaQuery().in(MsgEventInfo::getEventIndex,eveIdndex).list();
|
||||
temp =msgEventInfoService.getMsgByIds(eveIdndex);
|
||||
|
||||
}
|
||||
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());
|
||||
if (eventIds.size() > 1000) {
|
||||
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 =msgEventInfoService.getMsgByIds(eventIds);
|
||||
result = result.stream().sorted(Comparator.comparing(MsgEventInfo::getSendTime, Comparator.reverseOrder())).collect(Collectors.toList());
|
||||
if (result.size() > 200) {
|
||||
result = result.subList(0, 200);
|
||||
@@ -719,6 +685,103 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
|
||||
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){
|
||||
List<EventDetailVO> result = new ArrayList<>();
|
||||
if(CollectionUtils.isEmpty(list)){
|
||||
@@ -740,10 +803,11 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
|
||||
eventDetailVO.setEventvalue(temp.getEventvalue());
|
||||
eventDetailVO.setLookFlag(temp.getLookFlag());
|
||||
eventDetailVO.setNoticeFlag(temp.getNoticeFlag());
|
||||
if(Objects.nonNull(temp.getEventSeverity())){
|
||||
eventDetailVO.setEventSeverity(temp.getEventSeverity());
|
||||
if( temp.getEventvalue()< 0.5){
|
||||
eventDetailVO.setEventSeverity(1);
|
||||
}else{
|
||||
eventDetailVO.setEventSeverity(2);
|
||||
}
|
||||
|
||||
eventDetailVO.setMsgEventInfoSize(handleMsg.stream().filter(msg->Objects.equals(msg.getEventIndex(),temp.getEventdetailIndex())).count());
|
||||
if(ledgerBaseInfoDTOMap.containsKey(temp.getLineid())){
|
||||
LedgerBaseInfoDTO ledgerBaseInfoDTO = ledgerBaseInfoDTOMap.get(temp.getLineid());
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
package com.njcn.gather.event.transientes.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.gather.event.transientes.mapper.MsgEventInfoMapper;
|
||||
import com.njcn.gather.event.transientes.pojo.po.MsgEventInfo;
|
||||
import com.njcn.gather.event.transientes.service.MsgEventInfoService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: cdf
|
||||
@@ -13,4 +18,22 @@ import org.springframework.stereotype.Service;
|
||||
*/
|
||||
@Service
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -70,7 +70,7 @@ public class AuthController extends BaseController {
|
||||
if (ObjectUtil.isNull(user)) {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, UserValidMessage.LOGIN_FAILED);
|
||||
} else {
|
||||
String accessToken = JwtUtil.getAccessToken(user.getId());
|
||||
String accessToken = JwtUtil.getAccessToken(user.getId(),user.getLoginName());
|
||||
String refreshToken = JwtUtil.getRefreshToken(accessToken);
|
||||
Token token = new Token();
|
||||
token.setAccessToken(accessToken);
|
||||
@@ -117,7 +117,7 @@ public class AuthController extends BaseController {
|
||||
Map<String, Object> map = JwtUtil.parseToken(accessToken);
|
||||
String userId = (String) map.get(SecurityConstants.USER_ID);
|
||||
SysUser user = sysUserService.getById(userId);
|
||||
String accessTokenNew = JwtUtil.getAccessToken(userId);
|
||||
String accessTokenNew = JwtUtil.getAccessToken(userId,user.getLoginName());
|
||||
request.setAttribute(SecurityConstants.AUTHENTICATE_USERNAME, user.getLoginName());
|
||||
// String refreshTokenNew = JwtUtil.getRefreshToken(accessTokenNew);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user