代码调整

This commit is contained in:
2025-01-14 16:14:50 +08:00
parent f5afc2e9bc
commit dd4cf1eede
5 changed files with 112 additions and 56 deletions

View File

@@ -5,6 +5,7 @@ import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.njcn.gather.detection.pojo.dto.DevXiNumData; import com.njcn.gather.detection.pojo.dto.DevXiNumData;
import com.njcn.gather.detection.pojo.enums.SourceOperateCodeEnum; import com.njcn.gather.detection.pojo.enums.SourceOperateCodeEnum;
import com.njcn.gather.detection.pojo.enums.SourceResponseCodeEnum; import com.njcn.gather.detection.pojo.enums.SourceResponseCodeEnum;
@@ -15,6 +16,7 @@ import com.njcn.gather.detection.pojo.vo.*;
import com.njcn.gather.detection.service.impl.DetectionServiceImpl; import com.njcn.gather.detection.service.impl.DetectionServiceImpl;
import com.njcn.gather.detection.util.socket.*; import com.njcn.gather.detection.util.socket.*;
import com.njcn.gather.detection.util.socket.web.WebSocketHandler; import com.njcn.gather.detection.util.socket.web.WebSocketHandler;
import com.njcn.gather.device.device.pojo.po.PqDev;
import com.njcn.gather.device.device.pojo.vo.PreDetection; import com.njcn.gather.device.device.pojo.vo.PreDetection;
import com.njcn.gather.device.device.service.IPqDevService; import com.njcn.gather.device.device.service.IPqDevService;
import com.njcn.gather.device.script.pojo.param.PqScriptIssueParam; import com.njcn.gather.device.script.pojo.param.PqScriptIssueParam;
@@ -46,6 +48,7 @@ import java.time.format.DateTimeParseException;
import java.util.*; import java.util.*;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
@@ -250,6 +253,8 @@ public class SocketDevResponseService {
//获取数据流程结束,先把所有数据存到内存中 //获取数据流程结束,先把所有数据存到内存中
Map<String, List<DevData>> realDataXiMap = realDataXiList.stream().collect(Collectors.groupingBy(it -> it.getId().split(splitTag)[0])); Map<String, List<DevData>> realDataXiMap = realDataXiList.stream().collect(Collectors.groupingBy(it -> it.getId().split(splitTag)[0]));
realDataXiMap.forEach((devIp, dataList) -> { realDataXiMap.forEach((devIp, dataList) -> {
AtomicBoolean xiFlag = new AtomicBoolean(true);
XiNumberManager.devXiList.add(devIp); XiNumberManager.devXiList.add(devIp);
Map<String, List<DevData>> monitorMap = dataList.stream().collect(Collectors.groupingBy(DevData::getId)); Map<String, List<DevData>> monitorMap = dataList.stream().collect(Collectors.groupingBy(DevData::getId));
@@ -274,6 +279,9 @@ public class SocketDevResponseService {
coefficientVO.setDesc((XiNumberManager.stepNumber == 0 || XiNumberManager.stepNumber == 1) ? "系数下装" : "系数校准"); coefficientVO.setDesc((XiNumberManager.stepNumber == 0 || XiNumberManager.stepNumber == 1) ? "系数下装" : "系数校准");
assemblyEntity(list, F, coefficientVO, devParameter); assemblyEntity(list, F, coefficientVO, devParameter);
if(Objects.nonNull(coefficientVO.getResultFlag()) && coefficientVO.getResultFlag() == 0){
xiFlag.set(false);
}
DevXiNumData.GF gfItem = new DevXiNumData.GF(); DevXiNumData.GF gfItem = new DevXiNumData.GF();
gfItem.setUMonitorPoint(Integer.parseInt(splitStr[1]) - 1); gfItem.setUMonitorPoint(Integer.parseInt(splitStr[1]) - 1);
@@ -291,10 +299,15 @@ public class SocketDevResponseService {
devXiNumData.setChnNum(0); devXiNumData.setChnNum(0);
devXiNumData.setDevIP(devIp); devXiNumData.setDevIP(devIp);
devXiNumData.setGf(gf); devXiNumData.setGf(gf);
if(xiFlag.get()){
devXiNumData.setResultFlag(1);
}else {
devXiNumData.setResultFlag(0);
}
if (XiNumberManager.stepNumber == 0) { if (XiNumberManager.stepNumber == 0||XiNumberManager.stepNumber == 2) {
XiNumberManager.devXiNumDataMap.put(devIp, devXiNumData); XiNumberManager.devXiNumDataMap.put(devIp, devXiNumData);
} else if (XiNumberManager.stepNumber == 1) { } else if (XiNumberManager.stepNumber == 1||XiNumberManager.stepNumber == 3) {
XiNumberManager.smallDevXiNumDataMap.put(devIp, devXiNumData); XiNumberManager.smallDevXiNumDataMap.put(devIp, devXiNumData);
} }
}); });
@@ -330,8 +343,6 @@ public class SocketDevResponseService {
} else { } else {
System.out.println(devIp);
flag = false; flag = false;
//继续下发一轮 //继续下发一轮
if (!ia) { if (!ia) {
@@ -399,6 +410,19 @@ public class SocketDevResponseService {
sendWebSocket(param.getUserPageId(), SourceOperateCodeEnum.Coefficient_Check.getValue(), SourceOperateCodeEnum.small_comp_end.getValue(), XiNumberManager.devParameterList.get(1)); sendWebSocket(param.getUserPageId(), SourceOperateCodeEnum.Coefficient_Check.getValue(), SourceOperateCodeEnum.small_comp_end.getValue(), XiNumberManager.devParameterList.get(1));
System.out.println("-------------------------已经全部结束----------------------"); System.out.println("-------------------------已经全部结束----------------------");
CnSocketUtil.quitSend(param); CnSocketUtil.quitSend(param);
//修改设备表Factor_Check_Result字段
XiNumberManager.devXiNumDataMap.forEach((key,val)->{
DevXiNumData small = XiNumberManager.smallDevXiNumDataMap.get(key);
LambdaUpdateWrapper<PqDev> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(PqDev::getId,FormalTestManager.devIdMapComm.get(key));
if(val.getResultFlag() == 0 || small.getResultFlag() == 0){
updateWrapper.set(PqDev::getFactorCheckResult,0);
}else {
updateWrapper.set(PqDev::getFactorCheckResult,1);
}
iPqDevService.update(updateWrapper);
updateWrapper.clear();
});
} }
} }
@@ -441,6 +465,7 @@ public class SocketDevResponseService {
} }
private void assemblyEntity(List<DevData> deList, DevXiNumData.F F, CoefficientVO coefficientVO, CoefficientVO.DevParameter devParameter) { private void assemblyEntity(List<DevData> deList, DevXiNumData.F F, CoefficientVO coefficientVO, CoefficientVO.DevParameter devParameter) {
//表示接收完成,必须保证10个数 //表示接收完成,必须保证10个数
if (deList.size() >= 10) { if (deList.size() >= 10) {
@@ -498,6 +523,11 @@ public class SocketDevResponseService {
coefficientVO.setAIeXi(isWithinTenPercent(optionalIA, devParameter.getDevCurr(), iLimit) ? "合格" : "不合格"); coefficientVO.setAIeXi(isWithinTenPercent(optionalIA, devParameter.getDevCurr(), iLimit) ? "合格" : "不合格");
coefficientVO.setBIeXi(isWithinTenPercent(optionalIB, devParameter.getDevCurr(), iLimit) ? "合格" : "不合格"); coefficientVO.setBIeXi(isWithinTenPercent(optionalIB, devParameter.getDevCurr(), iLimit) ? "合格" : "不合格");
coefficientVO.setCIeXi(isWithinTenPercent(optionalIC, devParameter.getDevCurr(), iLimit) ? "合格" : "不合格"); coefficientVO.setCIeXi(isWithinTenPercent(optionalIC, devParameter.getDevCurr(), iLimit) ? "合格" : "不合格");
if("不合格".equals(coefficientVO.getAVuXi()) ||"不合格".equals(coefficientVO.getBVuXi()) ||"不合格".equals(coefficientVO.getCVuXi()) ||"不合格".equals(coefficientVO.getAIeXi()) ||"不合格".equals(coefficientVO.getBIeXi()) ||"不合格".equals(coefficientVO.getCIeXi())){
coefficientVO.setResultFlag(0);
}else {
coefficientVO.setResultFlag(1);
}
} }
} }
} }
@@ -523,18 +553,23 @@ public class SocketDevResponseService {
case SUCCESS: case SUCCESS:
String result = socketDataMsg.getData(); String result = socketDataMsg.getData();
//通讯校验成功 //通讯校验成功
webSocketHandler.sendMsgToUser(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 1));
if(!param.getOperateType().equals(SourceOperateCodeEnum.TEST_TEM_START.getValue())) {
webSocketHandler.sendMsgToUser(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 1));
}
successDevComm.add(result.split(splitTag)[0]); successDevComm.add(result.split(splitTag)[0]);
successComm.add(result); successComm.add(result);
System.out.println("设备通讯校验全部成功" + successComm.size() + "=====" + FormalTestManager.monitorIdListComm.size()); System.out.println("设备通讯校验!" + successComm.size() + "=====" + FormalTestManager.monitorIdListComm.size());
if (successComm.size() == FormalTestManager.monitorIdListComm.size()) { if (successComm.size() == FormalTestManager.monitorIdListComm.size()) {
SocketDataMsg temMsg = new SocketDataMsg(); if(!param.getOperateType().equals(SourceOperateCodeEnum.TEST_TEM_START.getValue())) {
temMsg.setCode(SourceResponseCodeEnum.DEV_COMM_ALL_SUCCESS.getCode()); SocketDataMsg temMsg = new SocketDataMsg();
temMsg.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_01.getValue()); temMsg.setCode(SourceResponseCodeEnum.DEV_COMM_ALL_SUCCESS.getCode());
temMsg.setRequestId(SourceOperateCodeEnum.YJC_SBTXJY.getValue()); temMsg.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_01.getValue());
webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(temMsg)); temMsg.setRequestId(SourceOperateCodeEnum.YJC_SBTXJY.getValue());
webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(temMsg));
}
//开始进行协议校验 //开始进行协议校验
successComm.clear(); successComm.clear();
@@ -932,10 +967,11 @@ public class SocketDevResponseService {
SocketManager.delSource(sourceIssue.getIndex()); SocketManager.delSource(sourceIssue.getIndex());
//在这一步判断是否已经触发暂停按钮 //在这一步判断是否已经触发暂停按钮
if (FormalTestManager.stopFlag) { if (FormalTestManager.stopFlag) {
CnSocketUtil.quitSend(param); // CnSocketUtil.quitSend(param);
successComm.clear(); successComm.clear();
realDataXiList.clear(); realDataXiList.clear();
sendWebSocket(param.getUserPageId(), "preStopTest", "stop", null); sendWebSocket(param.getUserPageId(), "preStopTest", "stop", null);
return;
} }
//开始进行下一项检测 //开始进行下一项检测

View File

@@ -19,6 +19,9 @@ public class DevXiNumData {
private List<GF> gf; private List<GF> gf;
private Integer resultFlag;
@Data @Data
public static class GF{ public static class GF{

View File

@@ -64,6 +64,13 @@ public class CoefficientVO {
/**
* 标识校验不合格的为 0 合格项为 1
*/
private Integer resultFlag;
@Data @Data
public static class DevParameter{ public static class DevParameter{

View File

@@ -181,7 +181,7 @@ public class PreDetectionServiceImpl implements PreDetectionService {
@Override @Override
public boolean restartTemTest(PreDetectionParam param) { public boolean restartTemTest(PreDetectionParam param) {
FormalTestManager.stopFlag = false; FormalTestManager.stopFlag = false;
specialDeal(param); /* specialDeal(param);
AdPlanSource planSource = adPlanSourceService.getOne(new LambdaQueryWrapper<AdPlanSource>().eq(AdPlanSource::getPlanId, param.getPlanId())); AdPlanSource planSource = adPlanSourceService.getOne(new LambdaQueryWrapper<AdPlanSource>().eq(AdPlanSource::getPlanId, param.getPlanId()));
if (ObjectUtil.isNotNull(planSource)) { if (ObjectUtil.isNotNull(planSource)) {
SourceInitialize sourceParam = pqSourceService.getSourceInitializeParam(planSource.getSourceId()); SourceInitialize sourceParam = pqSourceService.getSourceInitializeParam(planSource.getSourceId());
@@ -203,7 +203,21 @@ public class PreDetectionServiceImpl implements PreDetectionService {
} }
} else { } else {
throw new BusinessException(DetectionResponseEnum.PLAN_AND_SOURCE_NOT); throw new BusinessException(DetectionResponseEnum.PLAN_AND_SOURCE_NOT);
}*/
List<SourceIssue> sourceIssueList = SocketManager.getSourceList();
if (CollUtil.isNotEmpty(sourceIssueList)) {
SourceIssue sourceIssues = SocketManager.getSourceList().get(0);
SocketMsg<String> xuMsg = new SocketMsg<>();
xuMsg.setOperateCode(SourceOperateCodeEnum.OPER_GATHER.getValue());
xuMsg.setData(JSON.toJSONString(sourceIssues));
xuMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue() + "&&" + sourceIssues.getType());
SocketManager.sendMsg(param.getUserPageId() + source, JSON.toJSONString(xuMsg));
} else {
//TODO 是否最终检测完成需要推送给用户
iPqDevService.updateResult(param.getDevIds(), param.getCode());
CnSocketUtil.quitSend(param);
} }
return true; return true;
} }

View File

@@ -87,14 +87,6 @@ public class NettyDevClientHandler extends SimpleChannelInboundHandler<String> {
@Override @Override
public void channelInactive(ChannelHandlerContext ctx) { public void channelInactive(ChannelHandlerContext ctx) {
System.out.println("设备通讯客户端断线"); System.out.println("设备通讯客户端断线");
Channel channel = SocketManager.getChannelByUserId(param.getUserPageId() + dev);
if (Objects.nonNull(channel)) {
try {
channel.close().sync();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
SocketManager.removeUser(param.getUserPageId() + dev); SocketManager.removeUser(param.getUserPageId() + dev);
} }
@@ -108,44 +100,46 @@ public class NettyDevClientHandler extends SimpleChannelInboundHandler<String> {
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) { public void userEventTriggered(ChannelHandlerContext ctx, Object evt) {
if (evt instanceof IdleStateEvent) { if (evt instanceof IdleStateEvent) {
if (((IdleStateEvent) evt).state() == IdleState.READER_IDLE) { if (((IdleStateEvent) evt).state() == IdleState.READER_IDLE) {
if (CollUtil.isNotEmpty(SocketManager.getSourceList())) { if(!FormalTestManager.stopFlag) {
SourceIssue sourceIssue = SocketManager.getSourceList().get(0); if (CollUtil.isNotEmpty(SocketManager.getSourceList())) {
if (SocketManager.clockMap.containsKey(sourceIssue.getIndex())) { SourceIssue sourceIssue = SocketManager.getSourceList().get(0);
SocketManager.clockMap.put(sourceIssue.getIndex(), SocketManager.clockMap.get(sourceIssue.getIndex()) + 60L); if (SocketManager.clockMap.containsKey(sourceIssue.getIndex())) {
SocketManager.clockMap.put(sourceIssue.getIndex(), SocketManager.clockMap.get(sourceIssue.getIndex()) + 60L);
} else {
SocketManager.clockMap.put(sourceIssue.getIndex(), 60L);
}
System.out.println("超时函数进入-----》" + sourceIssue.getType() + "----:" + SocketManager.clockMap.get(sourceIssue.getIndex()) + "S");
if (sourceIssue.getType().equals(DicDataEnum.F.getCode())) {
//闪变,正常抛一轮最大等待20分钟超时
if (SocketManager.clockMap.get(sourceIssue.getIndex()) > 1300) {
System.out.println("超时处理-----》" + sourceIssue.getType() + "已超时----------------关闭");
CnSocketUtil.quitSend(param);
timeoutSend(sourceIssue);
}
} else if (sourceIssue.getType().equals(DicDataEnum.VOLTAGE.getCode()) || sourceIssue.getType().equals(DicDataEnum.HP.getCode())) {
//统计数据项,正常抛一轮数据,超时
if (SocketManager.clockMap.get(sourceIssue.getIndex()) > 180) {
CnSocketUtil.quitSend(param);
System.out.println("超时处理-----》" + sourceIssue.getType() + "已超时----------------关闭");
timeoutSend(sourceIssue);
}
} else {
//实时数据
if (SocketManager.clockMap.get(sourceIssue.getIndex()) > 60) {
CnSocketUtil.quitSend(param);
System.out.println("超时处理-----》" + sourceIssue.getType() + "已超时----------------关闭");
timeoutSend(sourceIssue);
}
}
} else { } else {
SocketManager.clockMap.put(sourceIssue.getIndex(), 60L); //为空则认为是常规步骤,设定一分钟超时
CnSocketUtil.quitSend(param);
} }
System.out.println("已经等了一分钟了。。。。。。。。。。。。");
System.out.println("超时函数进入-----》" + sourceIssue.getType() + "----:" + SocketManager.clockMap.get(sourceIssue.getIndex()) + "S");
if (sourceIssue.getType().equals(DicDataEnum.F.getCode())) {
//闪变,正常抛一轮最大等待20分钟超时
if (SocketManager.clockMap.get(sourceIssue.getIndex()) > 1300) {
System.out.println("超时处理-----》" + sourceIssue.getType() + "已超时----------------关闭");
CnSocketUtil.quitSend(param);
timeoutSend(sourceIssue);
}
} else if (sourceIssue.getType().equals(DicDataEnum.VOLTAGE.getCode()) || sourceIssue.getType().equals(DicDataEnum.HP.getCode())) {
//统计数据项,正常抛一轮数据,超时
if (SocketManager.clockMap.get(sourceIssue.getIndex()) > 180) {
CnSocketUtil.quitSend(param);
System.out.println("超时处理-----》" + sourceIssue.getType() + "已超时----------------关闭");
timeoutSend(sourceIssue);
}
} else {
//实时数据
if (SocketManager.clockMap.get(sourceIssue.getIndex()) > 60) {
CnSocketUtil.quitSend(param);
System.out.println("超时处理-----》" + sourceIssue.getType() + "已超时----------------关闭");
timeoutSend(sourceIssue);
}
}
} else {
//为空则认为是常规步骤,设定一分钟超时
CnSocketUtil.quitSend(param);
} }
System.out.println("已经等了一分钟了。。。。。。。。。。。。");
} }
} }
@@ -188,6 +182,8 @@ public class NettyDevClientHandler extends SimpleChannelInboundHandler<String> {
// 可以记录未知异常信息 // 可以记录未知异常信息
} }
ctx.close(); ctx.close();
} }