代码调整

This commit is contained in:
2024-12-23 21:02:28 +08:00
parent 5f694c88bf
commit 8dda33af0b
12 changed files with 294 additions and 106 deletions

View File

@@ -27,30 +27,44 @@ public class PreDetectionController extends BaseController {
/** /**
* 开始检测 * 终止预检测
*/ */
@PostMapping("/startTest") @PostMapping("/closePreTest")
@OperateInfo @OperateInfo
@ApiOperation("开始检测") @ApiOperation("终止预检测")
@ApiImplicitParam(name = "param", value = "查询参数", required = true) @ApiImplicitParam(name = "param", value = "查询参数", required = true)
public HttpResult<String> startTest(@RequestBody PreDetectionParam param){ public HttpResult<String> closePreTest(@RequestBody PreDetectionParam param){
String methodDescribe = getMethodDescribe("startTest"); String methodDescribe = getMethodDescribe("closePreTest");
preDetectionService.startTest(param); preDetectionService.closePreTest(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
} }
/** /**
* 开始检测 * 开始检测
*/ */
@PostMapping("/startTest2") @PostMapping("/startPreTest")
@OperateInfo @OperateInfo
@ApiOperation("开始检测") @ApiOperation("开始检测")
@ApiImplicitParam(name = "param", value = "查询参数", required = true) @ApiImplicitParam(name = "param", value = "查询参数", required = true)
public HttpResult<String> startTest2(@RequestBody PreDetectionParam param){ public HttpResult<String> startPreTest(@RequestBody PreDetectionParam param){
String methodDescribe = getMethodDescribe("startTest"); String methodDescribe = getMethodDescribe("startPreTest");
preDetectionService.sourceCommunicationCheck(param); preDetectionService.sourceCommunicationCheck(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
/**
* 测试
*/
@PostMapping("/startTest")
@OperateInfo
@ApiOperation("测试")
@ApiImplicitParam(name = "param", value = "查询参数", required = true)
public HttpResult<String> startTest(@RequestBody PreDetectionParam param){
String methodDescribe = getMethodDescribe("startTest");
preDetectionService.startTest(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
} }
} }

View File

@@ -86,44 +86,15 @@ public class SocketDevResponseService {
case YJC_SBTXJY: case YJC_SBTXJY:
devComm(socketDataMsg, param, msg); devComm(socketDataMsg, param, msg);
break; break;
case QUITE:
SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode());
SourceOperateCodeEnum operateCodeEnum = SourceOperateCodeEnum.getDictDataEnumByCode(socketDataMsg.getOperateCode());
SocketMsg socketMsg = new SocketMsg();
switch (dictDataEnumByCode) {
case SUCCESS:
//通讯校验成功
switch (operateCodeEnum) {
case QUIT_INIT_01:
break;
case QUIT_INIT_02:
socketMsg.setRequestId("quit");
socketMsg.setOperateCode("QUIT_FUNEND$01");
SocketManager.sendMsg(userKey, JSON.toJSONString(socketMsg));
break;
case QUIT_INIT_03:
socketMsg.setRequestId("quit");
socketMsg.setOperateCode("QUIT_FUNEND$02");
SocketManager.sendMsg(userKey, JSON.toJSONString(socketMsg));
break;
}
break;
case UNPROCESSED_BUSINESS:
break;
case NO_INIT_DEV:
break;
default:
WebSocketVO webSocketVO = new WebSocketVO();
break;
}
break;
case YJC_XYJY: case YJC_XYJY:
devXieyi(socketDataMsg, param, msg); devXieyi(socketDataMsg, param, msg);
break; break;
case YJC_XUJY: case YJC_XUJY:
devXu(param, socketDataMsg); devXu(param, socketDataMsg);
break; break;
case QUITE:
quitDeal(socketDataMsg, param, msg);
break;
} }
@@ -185,6 +156,11 @@ public class SocketDevResponseService {
break; break;
case RE_OPERATE: case RE_OPERATE:
//出现已经初始化情况,发送用户用户确认是否继续检测
webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
quitSend(param, socketMsg);
break;
case NO_INIT_DEV:
//发起关闭操作 //发起关闭操作
quitSend(param, socketMsg); quitSend(param, socketMsg);
break; break;
@@ -209,7 +185,23 @@ public class SocketDevResponseService {
webSocketHandler.sendMsgToUser(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg,devNameMapComm,2)); webSocketHandler.sendMsgToUser(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg,devNameMapComm,2));
if (socketDataMsg.getOperateCode().equals(SourceOperateCodeEnum.DEV_INIT_GATHER_02.getValue())) { if (socketDataMsg.getOperateCode().equals(SourceOperateCodeEnum.DEV_INIT_GATHER_02.getValue())) {
successXieyi.add(socketDataMsg.getData()); successXieyi.add(socketDataMsg.getData());
if (successXieyi.size() == monitorIdListComm.size()) { if (successXieyi.size() == monitorIdListComm.size()) {
for(String string :successXieyi){
//模拟统计协议校验,通讯校验已经校验过,模拟直接推送
SocketDataMsg webSend = new SocketDataMsg();
webSend.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_01.getValue());
webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode());
webSend.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue());
webSend.setData(string);
webSocketHandler.sendMsgToUser(param.getUserPageId(),MsgUtil.msgToWebData(webSend,devNameMapComm,1));
}
//协议3校验 //协议3校验
successXieyi = new ArrayList<>(); successXieyi = new ArrayList<>();
@@ -230,6 +222,12 @@ public class SocketDevResponseService {
successXieyi3.add(socketDataMsg.getData()); 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(); SocketDataMsg temMsg = new SocketDataMsg();
temMsg.setCode(SourceResponseCodeEnum.DEV_COMM_ALL_SUCCESS.getCode()); temMsg.setCode(SourceResponseCodeEnum.DEV_COMM_ALL_SUCCESS.getCode());
temMsg.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_03.getValue()); temMsg.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_03.getValue());
@@ -250,7 +248,7 @@ public class SocketDevResponseService {
xuMsg.setRequestId(SourceOperateCodeEnum.YJC_XUJY.getValue()); xuMsg.setRequestId(SourceOperateCodeEnum.YJC_XUJY.getValue());
xuMsg.setOperateCode(SourceOperateCodeEnum.OPER_GATHER.getValue()); xuMsg.setOperateCode(SourceOperateCodeEnum.OPER_GATHER.getValue());
xuMsg.setData(JSON.toJSONString(sourceIssues.get(0))); xuMsg.setData(JSON.toJSONString(sourceIssues.get(0)));
SocketManager.sendMsg(param.getUserPageId() + "_Source", MsgUtil.toJsonWithNewLinePlain(xuMsg)); SocketManager.sendMsg(param.getUserPageId() +handlerSourceStr, MsgUtil.toJsonWithNewLinePlain(xuMsg));
} }
} }
} }
@@ -258,11 +256,12 @@ public class SocketDevResponseService {
break; break;
case UNPROCESSED_BUSINESS: case UNPROCESSED_BUSINESS:
webSocketHandler.sendMsgToUser(param.getUserPageId(),msg); webSocketHandler.sendMsgToUser(param.getUserPageId(),JSON.toJSONString(socketDataMsg));
break; break;
case RE_OPERATE: case RE_OPERATE:
//发起关闭操作 //出现已经初始化情况,发送用户用户确认是否继续检测
webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
quitSend(param, socketMsg); quitSend(param, socketMsg);
break; break;
default: default:
@@ -273,15 +272,6 @@ public class SocketDevResponseService {
} }
} }
/**
* 退出检测
*/
private void quitSend(PreDetectionParam param, SocketMsg socketMsg) {
socketMsg.setRequestId(SourceOperateCodeEnum.QUITE.getValue());
socketMsg.setOperateCode(SourceOperateCodeEnum.QUIT_INIT_03.getValue());
SocketManager.sendMsg(param.getUserPageId() + handlerStr, JSON.toJSONString(socketMsg));
}
public void devXu(PreDetectionParam param, SocketDataMsg socketDataMsg) { public void devXu(PreDetectionParam param, SocketDataMsg socketDataMsg) {
@@ -292,6 +282,7 @@ public class SocketDevResponseService {
SocketMsg socketMsg = new SocketMsg(); SocketMsg socketMsg = new SocketMsg();
switch (dictDataEnumByCode) { switch (dictDataEnumByCode) {
case SUCCESS: case SUCCESS:
//webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(MsgUtil.msgToWebData(socketDataMsg,devNameMapComm,1)));
devInfo.add(devData); devInfo.add(devData);
success.add(devData.getId()); success.add(devData.getId());
if (success.size() == monitorIdListComm.size()) { if (success.size() == monitorIdListComm.size()) {
@@ -307,6 +298,19 @@ public class SocketDevResponseService {
info.addAll(devIsSource(dev, sourceIssues.get(0))); info.addAll(devIsSource(dev, sourceIssues.get(0)));
} }
} }
if(CollUtil.isNotEmpty(info)){
SocketDataMsg dataMsg = new SocketDataMsg();
dataMsg.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
dataMsg.setRequestId(SourceOperateCodeEnum.YJC_XUJY.getValue());
dataMsg.setCode(SourceResponseCodeEnum.SUCCESS.getCode());
for(SourceCompareDev sourceCompareDev : info){
dataMsg.setData(sourceCompareDev.getDevName()+"_"+sourceCompareDev.getLineNum()+sourceCompareDev.getDesc()+"校验结果:"+(sourceCompareDev.getIsQualified()?"合格":"不合格"));
webSocketHandler.sendMsgToUser(param.getUserPageId(),JSON.toJSONString(dataMsg) );
}
}
String userSource = param.getUserPageId() + handlerSourceStr; String userSource = param.getUserPageId() + handlerSourceStr;
SocketMsg msg = new SocketMsg(); SocketMsg msg = new SocketMsg();
msg.setRequestId(SourceOperateCodeEnum.YJC_YTXJY.getValue()); msg.setRequestId(SourceOperateCodeEnum.YJC_YTXJY.getValue());
@@ -319,10 +323,13 @@ public class SocketDevResponseService {
SocketManager.removeUser(param.getUserPageId() + handlerStr); SocketManager.removeUser(param.getUserPageId() + handlerStr);
//向前端推送消息 //向前端推送消息
socketMsg.setRequestId(SourceOperateCodeEnum.YJC_XUJY.getValue()); // webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
socketMsg.setOperateCode(socketDataMsg.getOperateCode());
socketMsg.setData(info); SocketDataMsg temMsg = new SocketDataMsg();
webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(socketMsg)); temMsg.setCode(SourceResponseCodeEnum.DEV_COMM_ALL_SUCCESS.getCode());
temMsg.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
temMsg.setRequestId(SourceOperateCodeEnum.YJC_XUJY.getValue());
webSocketHandler.sendMsgToUser(param.getUserPageId(),JSON.toJSONString(temMsg) );
} }
break; break;
case UNPROCESSED_BUSINESS: case UNPROCESSED_BUSINESS:
@@ -345,6 +352,74 @@ public class SocketDevResponseService {
} }
/**
* 退出检测
*/
private void quitDeal(SocketDataMsg socketDataMsg,PreDetectionParam param, String msg) {
SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode());
SourceOperateCodeEnum operateCodeEnum = SourceOperateCodeEnum.getDictDataEnumByCode(socketDataMsg.getOperateCode());
SocketMsg socketMsg = new SocketMsg();
String s = param.getUserPageId() + handlerStr;
switch (dictDataEnumByCode) {
case SUCCESS:
//通讯校验成功
switch (operateCodeEnum) {
case QUIT_INIT_01:
//关闭所有
SocketManager.removeUser(s);
break;
case QUIT_INIT_02:
socketMsg.setRequestId("quit");
socketMsg.setOperateCode("QUIT_FUNEND$01");
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
break;
case QUIT_INIT_03:
socketMsg.setRequestId("quit");
socketMsg.setOperateCode("QUIT_FUNEND$02");
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
break;
}
break;
case UNPROCESSED_BUSINESS:
break;
case NO_INIT_DEV:
switch (operateCodeEnum) {
case QUIT_INIT_01:
break;
case QUIT_INIT_02:
socketMsg.setRequestId("quit");
socketMsg.setOperateCode("QUIT_FUNEND$01");
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
break;
case QUIT_INIT_03:
socketMsg.setRequestId("quit");
socketMsg.setOperateCode("QUIT_FUNEND$02");
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
break;
}
break;
default:
WebSocketVO webSocketVO = new WebSocketVO();
break;
}
}
/**
* 退出检测
*/
private void quitSend(PreDetectionParam param, SocketMsg socketMsg) {
socketMsg.setRequestId(SourceOperateCodeEnum.QUITE.getValue());
socketMsg.setOperateCode(SourceOperateCodeEnum.QUIT_INIT_03.getValue());
SocketManager.sendMsg(param.getUserPageId() + handlerStr, JSON.toJSONString(socketMsg));
}
private List<SourceCompareDev> devIsSource(DevData dev, SourceIssue issue) { private List<SourceCompareDev> devIsSource(DevData dev, SourceIssue issue) {
List<SourceCompareDev> info = new ArrayList<>(); List<SourceCompareDev> info = new ArrayList<>();

View File

@@ -37,6 +37,7 @@ public class SocketSourceResponseService {
private final IPqDevService iPqDevService; private final IPqDevService iPqDevService;
private final String DEV = "_Dev"; private final String DEV = "_Dev";
private final String source = "_Source";
@Value("${socket.device.ip}") @Value("${socket.device.ip}")
@@ -56,6 +57,10 @@ public class SocketSourceResponseService {
case YJC_XUJY: case YJC_XUJY:
phaseSequenceDev(param, socketDataMsg); phaseSequenceDev(param, socketDataMsg);
break; break;
case QUITE_SOURCE:
// System.out.println("关闭源回调:"+msg);
SocketManager.removeUser(param.getUserPageId()+source);
break;
} }
} else { } else {
@@ -74,15 +79,10 @@ public class SocketSourceResponseService {
private void detectionDev(PreDetectionParam param, SocketDataMsg socketDataMsg) { private void detectionDev(PreDetectionParam param, SocketDataMsg socketDataMsg) {
SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode()); SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode());
if (ObjectUtil.isNotNull(dictDataEnumByCode)) { if (ObjectUtil.isNotNull(dictDataEnumByCode)) {
SocketMsg socketMsg; SocketMsg socketMsg = new SocketMsg();
switch (dictDataEnumByCode) { switch (dictDataEnumByCode) {
case SUCCESS: case SUCCESS:
socketMsg = new SocketMsg();
socketMsg.setRequestId(SourceOperateCodeEnum.YJC_YTXJY.getValue());
socketMsg.setOperateCode(socketDataMsg.getOperateCode());
socketMsg.setData("源通讯校验成功");
webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(socketMsg));
SocketManager.removeUser(param.getUserPageId()+"_Source");
//todo 前端推送收到的消息暂未处理好 //todo 前端推送收到的消息暂未处理好
webSocketHandler.sendMsgToUser(param.getUserPageId(),JSON.toJSONString(socketDataMsg) ); webSocketHandler.sendMsgToUser(param.getUserPageId(),JSON.toJSONString(socketDataMsg) );
@@ -96,7 +96,6 @@ 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); // 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;
@@ -127,10 +126,7 @@ public class SocketSourceResponseService {
switch (dictDataEnumByCode) { switch (dictDataEnumByCode) {
case SUCCESS: case SUCCESS:
//向前端推送信息 //向前端推送信息
socketMsg.setRequestId(socketDataMsg.getRequestId()); webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
socketMsg.setOperateCode(socketDataMsg.getOperateCode());
socketMsg.setData(dictDataEnumByCode.getMessage());
webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(socketMsg));
String s = param.getUserPageId() + DEV; String s = param.getUserPageId() + DEV;
socketMsg.setRequestId(SourceOperateCodeEnum.YJC_XUJY.getValue()); socketMsg.setRequestId(SourceOperateCodeEnum.YJC_XUJY.getValue());
@@ -148,6 +144,7 @@ public class SocketSourceResponseService {
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg)); SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
break; break;
case UNPROCESSED_BUSINESS: case UNPROCESSED_BUSINESS:
webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
break; break;
default: default:
socketMsg.setRequestId(socketDataMsg.getRequestId()); socketMsg.setRequestId(socketDataMsg.getRequestId());

View File

@@ -43,7 +43,8 @@ public enum SourceOperateCodeEnum {
YJC_XUJY("YJC_xujy", "预检测_相序校验"), YJC_XUJY("YJC_xujy", "预检测_相序校验"),
QUITE("quit","预监测_关闭设备通讯初始化") QUITE("quit","预监测_关闭设备通讯初始化"),
QUITE_SOURCE("close_source","预监测_关闭源通讯")
; ;

View File

@@ -23,5 +23,9 @@ public interface PreDetectionService {
boolean startTest(PreDetectionParam param); boolean startTest(PreDetectionParam param);
boolean closePreTest(PreDetectionParam param);
} }

View File

@@ -10,6 +10,7 @@ import com.njcn.gather.detection.handler.SocketSourceResponseService;
import com.njcn.gather.detection.pojo.enums.DetectionResponseEnum; import com.njcn.gather.detection.pojo.enums.DetectionResponseEnum;
import com.njcn.gather.detection.pojo.enums.SourceOperateCodeEnum; import com.njcn.gather.detection.pojo.enums.SourceOperateCodeEnum;
import com.njcn.gather.detection.pojo.param.PreDetectionParam; 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.SocketMsg;
import com.njcn.gather.detection.service.PreDetectionService; import com.njcn.gather.detection.service.PreDetectionService;
@@ -28,17 +29,20 @@ import com.njcn.gather.plan.service.IAdPlanSourceService;
import com.njcn.gather.system.dictionary.pojo.enums.DictDataEnum; import com.njcn.gather.system.dictionary.pojo.enums.DictDataEnum;
import com.njcn.gather.system.dictionary.service.IDictDataService; import com.njcn.gather.system.dictionary.service.IDictDataService;
import io.netty.channel.Channel; import io.netty.channel.Channel;
import io.netty.channel.ChannelFutureListener;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Objects;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class PreDetectionServiceImpl implements PreDetectionService { public class PreDetectionServiceImpl implements PreDetectionService {
private final String source = "source"; private final String source = "_Source";
private final String dev = "_Dev";
private final IPqDevService iPqDevService; private final IPqDevService iPqDevService;
private final IDictDataService dictDataService; private final IDictDataService dictDataService;
@@ -50,10 +54,10 @@ public class PreDetectionServiceImpl implements PreDetectionService {
private final SocketDevResponseService socketDevResponseService; private final SocketDevResponseService socketDevResponseService;
@Value("${socket.source.ip}") @Value("${socket.source.ip:192.168.1.136}")
private String ip; private String ip;
@Value("${socket.source.port}") @Value("${socket.source.port:10086}")
private Integer port; private Integer port;
private final SocketSourceResponseService sourceResponseService; private final SocketSourceResponseService sourceResponseService;
@@ -61,6 +65,40 @@ public class PreDetectionServiceImpl implements PreDetectionService {
@Override @Override
public void sourceCommunicationCheck(PreDetectionParam param) { public void sourceCommunicationCheck(PreDetectionParam param) {
Channel channel = SocketManager.getChannelByUserId(param.getUserPageId() + source);
if (Objects.nonNull(channel) && channel.isActive()) {
System.out.println("进入关闭源。。//////");
SocketDataMsg socketDataMsg = new SocketDataMsg();
socketDataMsg.setOperateCode(SourceOperateCodeEnum.CLOSE_GATHER.getValue());
socketDataMsg.setRequestId(SourceOperateCodeEnum.QUITE_SOURCE.getValue());
try {
channel.writeAndFlush(JSON.toJSONString(socketDataMsg)).sync();
} catch (InterruptedException e) {
e.printStackTrace();
}
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
SocketManager.removeUser(param.getUserPageId() + source);
SocketManager.removeUser(param.getUserPageId() + dev);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
/* /*
先组装源通讯协议 先组装源通讯协议
查询计划什么模式的(除了对比式,其他都是一个计划对应一个源) 查询计划什么模式的(除了对比式,其他都是一个计划对应一个源)
@@ -116,4 +154,20 @@ public class PreDetectionServiceImpl implements PreDetectionService {
return true; return true;
} }
@Override
public boolean closePreTest(PreDetectionParam param) {
SocketMsg socketMsg = new SocketMsg();
socketMsg.setRequestId(SourceOperateCodeEnum.QUITE.getValue());
socketMsg.setOperateCode(SourceOperateCodeEnum.QUIT_INIT_03.getValue());
SocketManager.sendMsg(param.getUserPageId() + dev, JSON.toJSONString(socketMsg));
socketMsg.setRequestId(SourceOperateCodeEnum.QUITE_SOURCE.getValue());
socketMsg.setOperateCode(SourceOperateCodeEnum.CLOSE_GATHER.getValue());
SocketManager.sendMsg(param.getUserPageId() + source, JSON.toJSONString(socketMsg));
return true;
}
} }

View File

@@ -41,6 +41,13 @@ public class MsgUtil {
} }
/**
*
* @param socketDataMsg
* @param devMap
* @param type 0.装置 1.监测点
* @return
*/
public static String msgToWebData(SocketDataMsg socketDataMsg, Map<String,String> devMap,Integer type){ public static String msgToWebData(SocketDataMsg socketDataMsg, Map<String,String> devMap,Integer type){
String data = socketDataMsg.getData(); String data = socketDataMsg.getData();
if (StrUtil.isNotBlank(data)) { if (StrUtil.isNotBlank(data)) {

View File

@@ -24,10 +24,15 @@ public class SocketManager {
public static void addGroup(String userId, NioEventLoopGroup group) { public static void addGroup(String userId, NioEventLoopGroup group) {
socketGroup.put(userId, group); socketGroup.put(userId, group);
} }
public static void removeUser(String userId) { public static void removeUser(String userId) {
Channel channel = socketSessions.get(userId); Channel channel = socketSessions.get(userId);
if(ObjectUtil.isNotNull(channel)){ if(ObjectUtil.isNotNull(channel)){
channel.close(); try {
channel.close().sync();
} catch (InterruptedException e) {
e.printStackTrace();
}
NioEventLoopGroup eventExecutors = socketGroup.get(userId); NioEventLoopGroup eventExecutors = socketGroup.get(userId);
if(ObjectUtil.isNotNull(channel)){ if(ObjectUtil.isNotNull(channel)){
eventExecutors.shutdownGracefully(); eventExecutors.shutdownGracefully();
@@ -48,7 +53,7 @@ public class SocketManager {
public static void sendMsg(String userId,String msg) { public static void sendMsg(String userId,String msg) {
Channel channel = socketSessions.get(userId); Channel channel = socketSessions.get(userId);
if(ObjectUtil.isNotNull(channel)){ if(ObjectUtil.isNotNull(channel)){
channel.writeAndFlush(msg); channel.writeAndFlush(msg+'\n');
System.out.println(userId+"__"+channel.id()+""+channel.remoteAddress()+"发送数据:"+msg); System.out.println(userId+"__"+channel.id()+""+channel.remoteAddress()+"发送数据:"+msg);
}else{ }else{
System.out.println(userId+"__发送数据失败通道不存在"+msg); System.out.println(userId+"__发送数据失败通道不存在"+msg);

View File

@@ -4,6 +4,7 @@ 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.njcn.gather.detection.pojo.enums.SourceResponseCodeEnum; import com.njcn.gather.detection.pojo.enums.SourceResponseCodeEnum;
import com.njcn.gather.detection.pojo.vo.SocketDataMsg;
import com.njcn.gather.detection.pojo.vo.WebSocketVO; import com.njcn.gather.detection.pojo.vo.WebSocketVO;
import com.njcn.gather.detection.util.socket.SocketManager; import com.njcn.gather.detection.util.socket.SocketManager;
import com.njcn.gather.detection.util.socket.WebServiceManager; import com.njcn.gather.detection.util.socket.WebServiceManager;
@@ -34,6 +35,7 @@ public class NettyClient {
Bootstrap bootstrap = new Bootstrap(); Bootstrap bootstrap = new Bootstrap();
try { try {
bootstrap.group(group) bootstrap.group(group)
.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 5000)
.channel(NioSocketChannel.class) .channel(NioSocketChannel.class)
.handler(new ChannelInitializer<NioSocketChannel>() { .handler(new ChannelInitializer<NioSocketChannel>() {
@Override @Override
@@ -52,7 +54,7 @@ public class NettyClient {
//空闲状态的handler //空闲状态的handler
// 添加LineBasedFrameDecoder来按行分割数据 // 添加LineBasedFrameDecoder来按行分割数据
.addLast(new LineBasedFrameDecoder(10240)) .addLast(new LineBasedFrameDecoder(10240))
// .addLast(new IdleStateHandler(10, 0, 0, TimeUnit.SECONDS)) .addLast(new IdleStateHandler(10, 0, 0, TimeUnit.SECONDS))
.addLast(new StringDecoder(CharsetUtil.UTF_8)) .addLast(new StringDecoder(CharsetUtil.UTF_8))
.addLast(new StringEncoder(CharsetUtil.UTF_8)) .addLast(new StringEncoder(CharsetUtil.UTF_8))
.addLast(handler); .addLast(handler);
@@ -66,6 +68,7 @@ public class NettyClient {
System.out.println("链接服务端失败..."); System.out.println("链接服务端失败...");
} else { } else {
System.out.println("链接服务端成功..."); System.out.println("链接服务端成功...");
System.out.println("客户端向服务端发送消息:"+msg);
channelFuture.channel().writeAndFlush(msg); channelFuture.channel().writeAndFlush(msg);
} }
}); });
@@ -83,11 +86,17 @@ public class NettyClient {
System.out.println("连接socket服务端发送异常............" + e.getMessage()); System.out.println("连接socket服务端发送异常............" + e.getMessage());
group.shutdownGracefully(); group.shutdownGracefully();
//TODO 通知页面 //TODO 通知页面
WebSocketVO webSocketVO = new WebSocketVO(); SocketDataMsg socketDataMsg = new SocketDataMsg();
webSocketVO.setType("aaa"); socketDataMsg.setType("aaa");
webSocketVO.setCode(SourceResponseCodeEnum.SOCKET_ERROR.getCode()); socketDataMsg.setCode(SourceResponseCodeEnum.SOCKET_ERROR.getCode());
webSocketVO.setMessage(SourceResponseCodeEnum.SOCKET_ERROR.getMessage()); socketDataMsg.setData(SourceResponseCodeEnum.SOCKET_ERROR.getMessage());
WebServiceManager.sendMsg(userPageId, JSON.toJSONString(webSocketVO)); socketDataMsg.setRequestId("connect");
if (handler instanceof NettySourceClientHandler) {
socketDataMsg.setOperateCode("Source");
}else{
socketDataMsg.setOperateCode("Dev");
}
WebServiceManager.sendMsg(userPageId, JSON.toJSONString(socketDataMsg));
} finally { } finally {
// System.out.println("进入clientSocket最后步骤---------------------"); // System.out.println("进入clientSocket最后步骤---------------------");
} }

View File

@@ -38,7 +38,7 @@ public class NettyDevClientHandler extends SimpleChannelInboundHandler<String> {
System.out.println("客户端通道已建立" + ctx.channel().id()); System.out.println("客户端通道已建立" + ctx.channel().id());
Channel channel = SocketManager.getChannelByUserId(param.getUserPageId()+"_Dev"); Channel channel = SocketManager.getChannelByUserId(param.getUserPageId()+"_Dev");
if(Objects.nonNull(channel)){ if(Objects.nonNull(channel)){
channel.close(); channel.close().sync();
} }
SocketManager.addUser(param.getUserPageId()+"_Dev",ctx.channel()); SocketManager.addUser(param.getUserPageId()+"_Dev",ctx.channel());
@@ -79,7 +79,7 @@ public class NettyDevClientHandler extends SimpleChannelInboundHandler<String> {
@Override @Override
public void handlerAdded(ChannelHandlerContext ctx) { public void handlerAdded(ChannelHandlerContext ctx) {
System.out.println("有通道接入" + ctx.channel()); System.out.println("有通道准备接入" + ctx.channel());
} }

View File

@@ -3,6 +3,7 @@ package com.njcn.gather.detection.util.socket.cilent;
import com.njcn.gather.detection.handler.SocketSourceResponseService; import com.njcn.gather.detection.handler.SocketSourceResponseService;
import com.njcn.gather.detection.pojo.enums.SourceOperateCodeEnum; import com.njcn.gather.detection.pojo.enums.SourceOperateCodeEnum;
import com.njcn.gather.detection.pojo.param.PreDetectionParam; 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.SocketMsg;
import com.njcn.gather.detection.util.socket.MsgUtil; import com.njcn.gather.detection.util.socket.MsgUtil;
import com.njcn.gather.detection.util.socket.SocketManager; import com.njcn.gather.detection.util.socket.SocketManager;
@@ -40,10 +41,7 @@ public class NettySourceClientHandler extends SimpleChannelInboundHandler<String
@Override @Override
public void channelActive(ChannelHandlerContext ctx) throws Exception { public void channelActive(ChannelHandlerContext ctx) throws Exception {
System.out.println("客户端通道已建立" + ctx.channel().id()); System.out.println("客户端通道已建立" + ctx.channel().id());
Channel channel = SocketManager.getChannelByUserId(webUser.getUserPageId() + "_Source");
if (Objects.nonNull(channel)) {
channel.close();
}
SocketManager.addUser(webUser.getUserPageId() + "_Source", ctx.channel()); SocketManager.addUser(webUser.getUserPageId() + "_Source", ctx.channel());
} }
@@ -98,7 +96,7 @@ public class NettySourceClientHandler extends SimpleChannelInboundHandler<String
@Override @Override
public void handlerAdded(ChannelHandlerContext ctx) { public void handlerAdded(ChannelHandlerContext ctx) {
System.out.println("有通道接入" + ctx.channel().id()); System.out.println("有通道准备接入" + ctx.channel().id());
} }

View File

@@ -44,6 +44,7 @@ public class NettyServerHandler extends SimpleChannelInboundHandler<String> {
channel.writeAndFlush("socket指令结果成功指令"); channel.writeAndFlush("socket指令结果成功指令");
}*/ }*/
if(!msg.contains("HeartBeat")){ if(!msg.contains("HeartBeat")){
if(msg.contains("start")){
JSONObject jsonObject1 = new JSONObject(); JSONObject jsonObject1 = new JSONObject();
jsonObject1.put("requestId","yjc_ytxjy"); jsonObject1.put("requestId","yjc_ytxjy");
jsonObject1.put("operateCode","INIT_GATHER"); jsonObject1.put("operateCode","INIT_GATHER");
@@ -61,6 +62,29 @@ public class NettyServerHandler extends SimpleChannelInboundHandler<String> {
jsonObject.put("operateCode","INIT_GATHER"); jsonObject.put("operateCode","INIT_GATHER");
jsonObject.put("code","10200"); jsonObject.put("code","10200");
channel.writeAndFlush(jsonObject.toJSONString()+'\n'); channel.writeAndFlush(jsonObject.toJSONString()+'\n');
}else if(msg.contains("YJC_xujy")){
JSONObject jsonObject = new JSONObject();
jsonObject.put("requestId","YJC_xujy");
jsonObject.put("operateCode","OPER_GATHER");
jsonObject.put("code","10201");
channel.writeAndFlush(jsonObject.toJSONString()+'\n');
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
JSONObject jsonObject1 = new JSONObject();
jsonObject1.put("requestId","YJC_xujy");
jsonObject1.put("operateCode","OPER_GATHER");
jsonObject1.put("code","10200");
channel.writeAndFlush(jsonObject1.toJSONString()+'\n');
}
} }