This commit is contained in:
2025-01-16 10:31:26 +08:00
parent bab07585a9
commit 4e0b16fad1
4 changed files with 34 additions and 26 deletions

View File

@@ -313,14 +313,14 @@ public class SocketDevResponseService {
//判断小电压是否系数超过大电压10%
double limit = 0.1;
XiNumberManager.smallDevXiNumDataMap.forEach((devIp, devXiNumDataBig) -> {
XiNumberManager.smallDevXiNumDataMap.forEach((devIp, devXiNumDataSmall) -> {
//定义一个标识: false:表示小电流系数和大电流系数
boolean flag = true;
DevXiNumData devXiNumDataSmall = XiNumberManager.devXiNumDataMap.get(devIp);
Map<Integer, DevXiNumData.GF> gfMap = devXiNumDataSmall.getGf().stream().collect(Collectors.toMap(DevXiNumData.GF::getUMonitorPoint, Function.identity()));
DevXiNumData devXiNumDataBig = XiNumberManager.devXiNumDataMap.get(devIp);
Map<Integer, DevXiNumData.GF> gfMapSmall = devXiNumDataSmall.getGf().stream().collect(Collectors.toMap(DevXiNumData.GF::getUMonitorPoint, Function.identity()));
for (DevXiNumData.GF bigGf : devXiNumDataBig.getGf()) {
DevXiNumData.F smallF = gfMap.get(bigGf.getUMonitorPoint()).getF();
DevXiNumData.F smallF = gfMapSmall.get(bigGf.getUMonitorPoint()).getF();
DevXiNumData.F bigF = bigGf.getF();
boolean ia = isWithinTenPercent(smallF.getIa_gain(), bigF.getIa_gain(), limit);
@@ -456,12 +456,12 @@ public class SocketDevResponseService {
return percentage <= limit;
}
private BigDecimal rangeNum(double num1, double num2, String type) {
private BigDecimal rangeNum(double num1, double num2,String type) {
double diff = Math.abs(num1 - num2);
double larger = Math.max(num1, num2);
if (DicDataEnum.V.getCode().equals(type)) {
if(DicDataEnum.V.getCode().equals(type)){
return BigDecimal.valueOf(diff / larger).setScale(4, RoundingMode.HALF_UP);
} else {
}else {
return BigDecimal.valueOf(diff / larger).multiply(BigDecimal.valueOf(100)).setScale(4, RoundingMode.HALF_UP);
}
}
@@ -525,12 +525,12 @@ public class SocketDevResponseService {
coefficientVO.setBIeXi(isWithinTenPercent(optionalIB, devParameter.getDevCurr(), iLimit) ? "合格" : "不合格");
coefficientVO.setCIeXi(isWithinTenPercent(optionalIC, devParameter.getDevCurr(), iLimit) ? "合格" : "不合格");
coefficientVO.setAV(rangeNum(optionalA, devParameter.getDevVolt(), DicDataEnum.V.getCode()).toString());
coefficientVO.setBV(rangeNum(optionalB, devParameter.getDevVolt(), DicDataEnum.V.getCode()).toString());
coefficientVO.setCV(rangeNum(optionalC, devParameter.getDevVolt(), DicDataEnum.V.getCode()).toString());
coefficientVO.setAI(rangeNum(optionalIA, devParameter.getDevCurr(), DicDataEnum.I.getCode()).toString());
coefficientVO.setBI(rangeNum(optionalIB, devParameter.getDevCurr(), DicDataEnum.I.getCode()).toString());
coefficientVO.setCI(rangeNum(optionalIC, devParameter.getDevCurr(), DicDataEnum.I.getCode()).toString());
coefficientVO.setAV(rangeNum(optionalA, devParameter.getDevVolt(),DicDataEnum.V.getCode()).toString());
coefficientVO.setBV(rangeNum(optionalB, devParameter.getDevVolt(),DicDataEnum.V.getCode()).toString());
coefficientVO.setCV(rangeNum(optionalC, devParameter.getDevVolt(),DicDataEnum.V.getCode()).toString());
coefficientVO.setAI(rangeNum(optionalIA, devParameter.getDevCurr(),DicDataEnum.I.getCode()).toString());
coefficientVO.setBI(rangeNum(optionalIB, devParameter.getDevCurr(),DicDataEnum.I.getCode()).toString());
coefficientVO.setCI(rangeNum(optionalIC, devParameter.getDevCurr(),DicDataEnum.I.getCode()).toString());
if ("不合格".equals(coefficientVO.getAVuXi()) || "不合格".equals(coefficientVO.getBVuXi()) || "不合格".equals(coefficientVO.getCVuXi()) || "不合格".equals(coefficientVO.getAIeXi()) || "不合格".equals(coefficientVO.getBIeXi()) || "不合格".equals(coefficientVO.getCIeXi())) {
coefficientVO.setResultFlag(0);
@@ -908,7 +908,9 @@ public class SocketDevResponseService {
}
Map<String, List<DevLineTestResult>> targetTestMap = new HashMap<>();
Map<String,List<DevLineTestResult>> targetTestMap = new HashMap<>();
/**
* 正式检测
@@ -939,7 +941,7 @@ public class SocketDevResponseService {
Map<String, Integer> textResult = detectionServiceImpl.processing(realDataXiList, param, FormalTestManager.devIdMapComm, sourceIssue, dataRule);
//组装实体推送给前台
assWebJson(param, textResult, socketDataMsg, sourceIssue);
assWebJson(param,textResult,socketDataMsg,sourceIssue);
//当小项结束后需要删除集合中的小项
SocketManager.delSource(sourceIssue.getIndex());
@@ -967,7 +969,7 @@ public class SocketDevResponseService {
resultList.add(devTem);
});
allDevTestList.clear();
CnSocketUtil.sendToWebSocket(param.getUserPageId(), socketDataMsg.getRequestId().split(stepTag)[1] + stepEnd, null, resultList, null);
CnSocketUtil.sendToWebSocket(param.getUserPageId(),socketDataMsg.getRequestId().split(stepTag)[1] + stepEnd,null,resultList,null);
}
//在这一步判断是否已经触发暂停按钮
@@ -985,7 +987,7 @@ public class SocketDevResponseService {
if (CollUtil.isNotEmpty(sourceIssueList)) {
SourceIssue sourceIssues = SocketManager.getSourceList().get(0);
if (residueCount == 0) {
CnSocketUtil.sendToWebSocket(param.getUserPageId(), sourceIssues.getType() + stepBegin, null, new ArrayList<>(), null);
CnSocketUtil.sendToWebSocket(param.getUserPageId(),sourceIssues.getType() + stepBegin,null,new ArrayList<>(),null);
}
SocketMsg<String> xuMsg = new SocketMsg<>();
@@ -1036,7 +1038,7 @@ public class SocketDevResponseService {
/**
* 组装实体推送给前端
*/
private void assWebJson(PreDetectionParam param, Map<String, Integer> textResult, SocketDataMsg socketDataMsg, SourceIssue sourceIssue) {
private void assWebJson(PreDetectionParam param,Map<String, Integer> textResult,SocketDataMsg socketDataMsg,SourceIssue sourceIssue){
List<DevLineTestResult> devListRes = new ArrayList<>();
FormalTestManager.devList.forEach(dev -> {
DevLineTestResult devLineTestResult = new DevLineTestResult();
@@ -1053,11 +1055,11 @@ public class SocketDevResponseService {
devListRes.add(devLineTestResult);
});
if (targetTestMap.containsKey(sourceIssue.getType())) {
if(targetTestMap.containsKey(sourceIssue.getType())){
List<DevLineTestResult> devLineTestResultList = targetTestMap.get(sourceIssue.getType());
devLineTestResultList.addAll(devListRes);
} else {
targetTestMap.put(sourceIssue.getType(), devListRes);
}else {
targetTestMap.put(sourceIssue.getType(),devListRes);
}
WebSocketVO<List<DevLineTestResult>> webSocketVO = new WebSocketVO<>();
@@ -1197,8 +1199,8 @@ public class SocketDevResponseService {
.sorted(Comparator.comparing(SourceIssue.ChannelListDTO::getChannelType))
.collect(Collectors.toList());
Map<String, String> sourceMessageMap = sourceMessage(issue);
List<String> v = Arrays.asList("VRMS", "VA", "U", "V", "电压");
List<String> i = Arrays.asList("IRMS", "IA", "I", "I", "电流");
List<String> v = Arrays.asList("VRMS", "VA", "U", "V");
List<String> i = Arrays.asList("IRMS", "IA", "I", "I");
devMap.forEach((key, value) -> {
List<DevData.SqlDataDTO> sqlData = value.stream().flatMap(x -> x.getSqlData().stream()).collect(Collectors.toList());
getResult(key, sqlData, sourceMessageMap, sourceV, info, v);
@@ -1253,7 +1255,7 @@ public class SocketDevResponseService {
Boolean b = getaBoolean(sourceMap.get(type + "b"), data.get(0).getList().getB(), dataPhase.get(0).getList().getB());
Boolean c = getaBoolean(sourceMap.get(type + "c"), data.get(0).getList().getC(), dataPhase.get(0).getList().getC());
compareDev.setIsQualified(a && b && c);
compareDev.setDesc(name + (compareDev.getIsQualified() ? "合格->" : "不合格->") + desc + stepTag + devMessage(type, data, dataPhase));
compareDev.setDesc(name + (compareDev.getIsQualified() ? "合格->" : "不合格->") +stepTag + desc + stepTag + devMessage(type, data, dataPhase));
return compareDev;
}

View File

@@ -56,6 +56,7 @@ public enum SourceOperateCodeEnum {
UNKNOWN_OPERATE("unknown_operate","未知的操作返回,请联系管理员排查"),
SOCKET_TIMEOUT("socket_timeout","与源或者装置通讯等待超时"),
STOP_TIMEOUT("stop_timeout","暂停时间超过十分钟"),
SERVER_ERROR("server_error","服务端主动关闭连接,请稍后再试"),

View File

@@ -85,7 +85,7 @@ public class NettyDevClientHandler extends SimpleChannelInboundHandler<String> {
* @param ctx
*/
@Override
public void channelInactive(ChannelHandlerContext ctx) {
public void channelInactive(ChannelHandlerContext ctx) throws Exception {
System.out.println("设备通讯客户端断线");
ctx.close();
SocketManager.removeUser(param.getUserPageId() + dev);
@@ -173,6 +173,7 @@ public class NettyDevClientHandler extends SimpleChannelInboundHandler<String> {
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
System.out.println("捕获到设备服务异常。。。。。。。");
// 处理异常,例如记录日志、关闭连接等
cause.printStackTrace();
// 根据异常类型进行不同的处理
@@ -183,6 +184,8 @@ public class NettyDevClientHandler extends SimpleChannelInboundHandler<String> {
} else if (cause instanceof IOException) {
// 处理I/O异常例如读写错误
System.out.println("IOException caught: There was an I/O error.");
CnSocketUtil.sendToWebSocket(param.getUserPageId(),SourceOperateCodeEnum.SERVER_ERROR.getValue(),SourceOperateCodeEnum.SERVER_ERROR.getValue(),SourceOperateCodeEnum.SERVER_ERROR.getMsg(),null );
// 例如可以记录更详细的I/O错误信息
} else if (cause instanceof TimeoutException) {
// 处理超时异常

View File

@@ -6,6 +6,7 @@ import com.njcn.gather.detection.pojo.enums.SourceOperateCodeEnum;
import com.njcn.gather.detection.pojo.param.PreDetectionParam;
import com.njcn.gather.detection.pojo.vo.SocketDataMsg;
import com.njcn.gather.detection.pojo.vo.SocketMsg;
import com.njcn.gather.detection.pojo.vo.WebSocketVO;
import com.njcn.gather.detection.util.socket.CnSocketUtil;
import com.njcn.gather.detection.util.socket.MsgUtil;
import com.njcn.gather.detection.util.socket.SocketManager;
@@ -115,6 +116,7 @@ public class NettySourceClientHandler extends SimpleChannelInboundHandler<String
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
// 处理异常,例如记录日志、关闭连接等
System.out.println("捕获到源异常。。。。。。。");
cause.printStackTrace();
// 根据异常类型进行不同的处理
if (cause instanceof ConnectException) {
@@ -123,7 +125,7 @@ public class NettySourceClientHandler extends SimpleChannelInboundHandler<String
} else if (cause instanceof IOException) {
// 处理I/O异常例如读写错误
System.out.println("IOException caught: There was an I/O error.");
CnSocketUtil.sendToWebSocket(webUser.getUserPageId(),SourceOperateCodeEnum.SERVER_ERROR.getValue(),SourceOperateCodeEnum.SERVER_ERROR.getValue(),SourceOperateCodeEnum.SERVER_ERROR.getMsg(),null );
// 例如可以记录更详细的I/O错误信息
} else if (cause instanceof TimeoutException) {
// 处理超时异常