代码调整

This commit is contained in:
2024-12-20 16:35:50 +08:00
parent 603d5cdd5f
commit bc33f78d0c
9 changed files with 83 additions and 37 deletions

View File

@@ -26,6 +26,7 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -46,6 +47,8 @@ public class SocketDevResponseService {
* 存储的装置相序数据 * 存储的装置相序数据
*/ */
List<DevData> devInfo = new ArrayList<>(); List<DevData> devInfo = new ArrayList<>();
Map<String,DevData> devDataMap = new HashMap<>();
/** /**
* 成功结束的装置 * 成功结束的装置
*/ */
@@ -67,7 +70,7 @@ public class SocketDevResponseService {
/** /**
* 成功结束的装置 * 保存成功的协议
*/ */
List<String> successXieyi = new ArrayList<>(); List<String> successXieyi = new ArrayList<>();
List<String> successXieyi3 = new ArrayList<>(); List<String> successXieyi3 = new ArrayList<>();
@@ -139,12 +142,20 @@ public class SocketDevResponseService {
switch (dictDataEnumByCode) { switch (dictDataEnumByCode) {
case SUCCESS: case SUCCESS:
//通讯校验成功 //通讯校验成功
webSocketHandler.sendMsgToUser(param.getUserPageId(), msg); webSocketHandler.sendMsgToUser(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg,devNameMapComm,1));
String mId = JSON.parseObject(msg).get("data").toString(); String mId = JSON.parseObject(msg).get("data").toString();
successComm.add(mId); successComm.add(mId);
System.out.println(successComm.size() + "=====" + monitorIdListComm.size()); System.out.println(successComm.size() + "=====" + monitorIdListComm.size());
if (successComm.size() == monitorIdListComm.size()) { if (successComm.size() == monitorIdListComm.size()) {
SocketDataMsg temMsg = new SocketDataMsg();
temMsg.setCode(SourceResponseCodeEnum.DEV_COMM_ALL_SUCCESS.getCode());
temMsg.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_01.getValue());
temMsg.setRequestId(SourceOperateCodeEnum.YJC_SBTXJY.getValue());
webSocketHandler.sendMsgToUser(param.getUserPageId(),JSON.toJSONString(temMsg) );
//开始进行协议校验 //开始进行协议校验
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);
@@ -162,14 +173,15 @@ public class SocketDevResponseService {
break; break;
case UNPROCESSED_BUSINESS: case UNPROCESSED_BUSINESS:
webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
break; break;
case DEV_ERROR: case DEV_ERROR:
webSocketHandler.sendMsgToUser(param.getUserPageId(), msg); webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
break; break;
case DEV_TARGET: case DEV_TARGET:
webSocketHandler.sendMsgToUser(param.getUserPageId(), msg); webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
break; break;
case RE_OPERATE: case RE_OPERATE:
@@ -194,13 +206,9 @@ public class SocketDevResponseService {
switch (dictDataEnumByCode) { switch (dictDataEnumByCode) {
case SUCCESS: case SUCCESS:
webSocketHandler.sendMsgToUser(param.getUserPageId(), msg); webSocketHandler.sendMsgToUser(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg,devNameMapComm,2));
if (socketDataMsg.getOperateCode().equals(SourceOperateCodeEnum.DEV_INIT_GATHER_02.getValue())) {
JSONObject jsonObject = JSON.parseObject(msg); successXieyi.add(socketDataMsg.getData());
String mId = jsonObject.get("data").toString();
String type = jsonObject.get("operateCode").toString();
if (type.equals(SourceOperateCodeEnum.DEV_INIT_GATHER_02.getValue())) {
successXieyi.add(mId);
if (successXieyi.size() == monitorIdListComm.size()) { if (successXieyi.size() == monitorIdListComm.size()) {
//协议3校验 //协议3校验
successXieyi = new ArrayList<>(); successXieyi = new ArrayList<>();
@@ -218,10 +226,18 @@ public class SocketDevResponseService {
SocketManager.sendMsg(s, json); SocketManager.sendMsg(s, json);
} }
} else if (type.equals(SourceOperateCodeEnum.DEV_INIT_GATHER_03.getValue())) { } else if (socketDataMsg.getOperateCode().equals(SourceOperateCodeEnum.DEV_INIT_GATHER_03.getValue())) {
successXieyi3.add(mId); successXieyi3.add(socketDataMsg.getData());
System.out.println(successXieyi3.size() + "=====" + monitorIdListComm.size()); System.out.println(successXieyi3.size() + "=====" + monitorIdListComm.size());
if (successXieyi3.size() == monitorIdListComm.size()) { if (successXieyi3.size() == monitorIdListComm.size()) {
SocketDataMsg temMsg = new SocketDataMsg();
temMsg.setCode(SourceResponseCodeEnum.DEV_COMM_ALL_SUCCESS.getCode());
temMsg.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_03.getValue());
temMsg.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue());
webSocketHandler.sendMsgToUser(param.getUserPageId(),JSON.toJSONString(temMsg) );
System.out.println("开始相序校验++++++++++");
System.out.println("开始相序校验,向源下参数++++++++++"); System.out.println("开始相序校验,向源下参数++++++++++");
PqScriptIssueParam issueParam = new PqScriptIssueParam(); PqScriptIssueParam issueParam = new PqScriptIssueParam();
issueParam.setPlanId(param.getPlanId()); issueParam.setPlanId(param.getPlanId());
@@ -242,6 +258,8 @@ public class SocketDevResponseService {
break; break;
case UNPROCESSED_BUSINESS: case UNPROCESSED_BUSINESS:
webSocketHandler.sendMsgToUser(param.getUserPageId(),msg);
break; break;
case RE_OPERATE: case RE_OPERATE:
//发起关闭操作 //发起关闭操作
@@ -428,6 +446,7 @@ public class SocketDevResponseService {
//初始化相序集合 //初始化相序集合
this.devInfo = new ArrayList<>(); this.devInfo = new ArrayList<>();
this.success = new ArrayList<>(); this.success = new ArrayList<>();
this.devDataMap = new HashMap<>();
List<PreDetection> pqDevList = iPqDevService.getDevInfo(param.getDevIds()); List<PreDetection> pqDevList = iPqDevService.getDevInfo(param.getDevIds());
@@ -435,6 +454,7 @@ public class SocketDevResponseService {
.map(PreDetection.MonitorListDTO::getLineId) .map(PreDetection.MonitorListDTO::getLineId)
.collect(Collectors.toList()); .collect(Collectors.toList());
this.devNameMapComm = pqDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevName)); this.devNameMapComm = pqDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevName));
} }

View File

@@ -84,6 +84,9 @@ public class SocketSourceResponseService {
webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(socketMsg)); webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(socketMsg));
SocketManager.removeUser(param.getUserPageId()+"_Source"); SocketManager.removeUser(param.getUserPageId()+"_Source");
//todo 前端推送收到的消息暂未处理好
webSocketHandler.sendMsgToUser(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<String, List<PreDetection>> map = new HashMap(1);
@@ -93,9 +96,12 @@ public class SocketSourceResponseService {
socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_01.getValue()); socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_01.getValue());
socketMsg.setData(jsonString); socketMsg.setData(jsonString);
String json = JSON.toJSONString(socketMsg); String json = JSON.toJSONString(socketMsg);
NettyClient.socketClient(ip, port, s,json, new NettyDevClientHandler(param, socketDevResponseService));
// SocketManager.sendMsg(s,json);
NettyClient.socketClient(ip, port, param.getUserPageId(), json, new NettyDevClientHandler(param, socketDevResponseService)); NettyClient.socketClient(ip, port, param.getUserPageId(), json, new NettyDevClientHandler(param, socketDevResponseService));
break; break;
case UNPROCESSED_BUSINESS: case UNPROCESSED_BUSINESS:
webSocketHandler.sendMsgToUser(param.getUserPageId(),JSON.toJSONString(socketDataMsg) );
break; break;
default: default:
socketMsg = new SocketMsg(); socketMsg = new SocketMsg();

View File

@@ -34,7 +34,8 @@ public enum SourceResponseCodeEnum {
NO_INIT_DEV(10556,"不存在上线的设备"), NO_INIT_DEV(10556,"不存在上线的设备"),
//自定义前端展示消息 //自定义前端展示消息
SOCKET_ERROR(20000,"服务端连接失败") SOCKET_ERROR(25000,"服务端连接失败"),
DEV_COMM_ALL_SUCCESS(25001,"校验成功")

View File

@@ -11,6 +11,11 @@ import lombok.Data;
@Data @Data
public class SocketDataMsg { public class SocketDataMsg {
/**
* 标识不同业务
*/
private String type = "aaa";
/** /**
* 请求id确保接收到响应时知晓是针对的哪次请求的应答 * 请求id确保接收到响应时知晓是针对的哪次请求的应答
*/ */

View File

@@ -1,12 +1,18 @@
package com.njcn.gather.detection.pojo.vo; package com.njcn.gather.detection.pojo.vo;
import com.njcn.gather.detection.pojo.enums.SourceResponseCodeEnum; import com.njcn.gather.detection.pojo.enums.SourceResponseCodeEnum;
import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
@Data @Data
@AllArgsConstructor
@NoArgsConstructor
public class WebSocketVO<T> { public class WebSocketVO<T> {
private String type;
private Integer code; private Integer code;
private String message; private String message;
@@ -14,18 +20,11 @@ public class WebSocketVO<T> {
private T data; private T data;
public WebSocketVO(SourceResponseCodeEnum sourceResponseCodeEnum){ public WebSocketVO(SourceResponseCodeEnum sourceResponseCodeEnum,String type){
this.type = type;
this.code = sourceResponseCodeEnum.getCode(); this.code = sourceResponseCodeEnum.getCode();
this.message= sourceResponseCodeEnum.getMessage(); this.message= sourceResponseCodeEnum.getMessage();
} }
public WebSocketVO(Integer code, String message, T data) {
this.code = code;
this.message = message;
this.data = data;
}
public WebSocketVO() {
} }
}

View File

@@ -112,19 +112,8 @@ public class PreDetectionServiceImpl implements PreDetectionService {
public boolean startTest(PreDetectionParam param) { public boolean startTest(PreDetectionParam param) {
socketDevResponseService.initList(param); socketDevResponseService.initList(param);
Runnable runnable = new Runnable() {
@Override
public void run() {
String ddId = param.getUserPageId() + "_Source";
Channel channel = SocketManager.getChannelByUserId(ddId);
if (channel == null || !channel.isActive()) {
NettyClient.socketClient(ip, port, param.getUserPageId(),"start\n", new NettySourceClientHandler(param, sourceResponseService)); NettyClient.socketClient(ip, port, param.getUserPageId(),"start\n", new NettySourceClientHandler(param, sourceResponseService));
}
}
};
runnable.run();
return true; return true;
} }
} }

View File

@@ -1,9 +1,12 @@
package com.njcn.gather.detection.util.socket; package com.njcn.gather.detection.util.socket;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson.serializer.SerializerFeature;
import com.njcn.gather.detection.pojo.vo.SocketDataMsg; import com.njcn.gather.detection.pojo.vo.SocketDataMsg;
import java.util.Map;
/** /**
* @author wr * @author wr
* @description * @description
@@ -36,4 +39,26 @@ public class MsgUtil {
public static String toJsonWithNewLinePlain(Object obj) { public static String toJsonWithNewLinePlain(Object obj) {
return JSON.toJSONString(obj) + "\n"; return JSON.toJSONString(obj) + "\n";
} }
public static String msgToWebData(SocketDataMsg socketDataMsg, Map<String,String> devMap,Integer type){
String data = socketDataMsg.getData();
if (StrUtil.isNotBlank(data)) {
String[] parts = data.split("_");
if (parts.length > 0) {
String key = parts[0];
String newValue = devMap.get(key);
if (newValue != null) {
if(type == 0) {
socketDataMsg.setData(newValue);
}else {
socketDataMsg.setData(newValue+"_"+parts[1]+"");
}
}
}
}
return JSON.toJSONString(socketDataMsg);
}
} }

View File

@@ -80,10 +80,11 @@ public class NettyClient {
} }
} }
} catch (Exception e) { } catch (Exception e) {
System.out.println("连接socker服务端发送异常............" + e.getMessage()); System.out.println("连接socket服务端发送异常............" + e.getMessage());
group.shutdownGracefully(); group.shutdownGracefully();
//TODO 通知页面 //TODO 通知页面
WebSocketVO webSocketVO = new WebSocketVO(); WebSocketVO webSocketVO = new WebSocketVO();
webSocketVO.setType("aaa");
webSocketVO.setCode(SourceResponseCodeEnum.SOCKET_ERROR.getCode()); webSocketVO.setCode(SourceResponseCodeEnum.SOCKET_ERROR.getCode());
webSocketVO.setMessage(SourceResponseCodeEnum.SOCKET_ERROR.getMessage()); webSocketVO.setMessage(SourceResponseCodeEnum.SOCKET_ERROR.getMessage());
WebServiceManager.sendMsg(userPageId, JSON.toJSONString(webSocketVO)); WebServiceManager.sendMsg(userPageId, JSON.toJSONString(webSocketVO));

View File

@@ -123,7 +123,7 @@ public class WebSocketHandler extends SimpleChannelInboundHandler<TextWebSocketF
* 推送数据至前台 * 推送数据至前台
*/ */
public void sendMsgToUser(String userId, String msg) { public void sendMsgToUser(String userId, String msg) {
// WebServiceManager.sendMsg(userId, msg); WebServiceManager.sendMsg(userId, msg);
} }
@Override @Override