hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/BarcodeReadThread.java
New file @@ -0,0 +1,82 @@ package com.mes.job; import com.mes.glassinfo.service.GlassInfoService; import lombok.SneakyThrows; import org.springframework.beans.factory.annotation.Autowired; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.InetSocketAddress; import java.net.Socket; public class BarcodeReadThread extends Thread{ public BarcodeReadThread(String ip,Integer port,Downpush downpush) { this.ip=ip; this.port=port; this.downpush=downpush; } private Socket socket; private String ip; private Integer port; private Downpush downpush; private BufferedReader in; @SneakyThrows @Override public void run() { connectCheckin();//初次 循环尝试连接,直到连接成功 while (this!=null) { try { in = new BufferedReader(new InputStreamReader(socket.getInputStream())); String response = in.readLine(); if(response!=null) { downpush.barcodeCheckin(response); } } catch (Exception exception) { //异常,重连 connectCheckin(); } finally { if(in!=null) { in.close(); } } Thread.sleep(100); } } @SneakyThrows private void connectCheckin() { while (this!=null) { try { socket=new Socket(); socket.setSoTimeout(10000); socket.connect(new InetSocketAddress(ip,port)); if(socket.isConnected()) { return; } } catch (Exception exception) { } Thread.sleep(1000); } } } hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java
@@ -27,6 +27,7 @@ import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.InetSocketAddress; import java.net.Socket; import java.util.ArrayList; import java.util.List; @@ -233,4 +234,34 @@ }).start(); } } @Scheduled(fixedDelay = Long.MAX_VALUE) public void scanCodeTaskCopy() { log.info("扫描任务已启动"); try { BarcodeReadThread brt=new BarcodeReadThread(scanIp,scanPort,this); brt.start(); }catch (Exception exception) { log.info("扫描任务启动异常,原因为{}", exception.getMessage()); } } //socket读取到消息后会调用这个函数 public void barcodeCheckin(String response) { log.info("扫描到的玻璃id:{}", response); List<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("scanCode"); if (CollectionUtils.isNotEmpty(sendwServer)) { //按照玻璃id获取玻璃信息返回给前端界面,具体需要哪些数据待确认 GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>() .eq(GlassInfo::getGlassId, response).last("limit 1")); if (null == glassInfo) { log.info("按照玻璃id:{},无法找到玻璃信息", response); } else { sendwServer.get(0).sendMessage(glassInfo.toString()); } } } }