diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml new file mode 100644 index 0000000..560e992 --- /dev/null +++ b/.idea/dataSources.xml @@ -0,0 +1,12 @@ + + + + + mysql.8 + true + com.mysql.cj.jdbc.Driver + jdbc:mysql://116.62.133.59:3306 + $ProjectFileDir$ + + + \ No newline at end of file diff --git a/MatchLogs.txt b/MatchLogs.txt index d4fe56f..a2fec18 100644 Binary files a/MatchLogs.txt and b/MatchLogs.txt differ diff --git a/src/com/qst/dms/net/DmsNetServer.java b/src/com/qst/dms/net/DmsNetServer.java new file mode 100644 index 0000000..7a372aa --- /dev/null +++ b/src/com/qst/dms/net/DmsNetServer.java @@ -0,0 +1,101 @@ +package com.qst.dms.net; + +import com.qst.dms.entity.MatchedLogRec; +import com.qst.dms.entity.MatchedTransport; +import com.qst.dms.service.LogRecService; +import com.qst.dms.service.TransportService; + +import java.io.IOException; +import java.io.ObjectInputStream; +import java.net.ServerSocket; +import java.net.Socket; +import java.util.ArrayList; + +public class DmsNetServer { + public static void main(String[] args) { + AcceptLogThread acceptLogThread = new AcceptLogThread(10000); + AcceptTranThread acceptTranThread = new AcceptTranThread(10001); + acceptLogThread.start(); + acceptTranThread.start(); + } +} + +class AcceptLogThread extends Thread{ + Socket socket; + ObjectInputStream ois; + ServerSocket serverSocket; + LogRecService logRecService; + + AcceptLogThread(int port){ + logRecService = new LogRecService(); + try{ + serverSocket = new ServerSocket(port); + } + catch (IOException e) + { + e.printStackTrace(); + } + } + @Override + public void run() { + while(this.isAlive()) + { + try{ + socket = serverSocket.accept(); + if(socket!=null) + { + ois = new ObjectInputStream(socket.getInputStream()); + ArrayListmatchedLogRecs = (ArrayList) ois.readObject(); + logRecService.saveMatchLogToDB(matchedLogRecs); + System.out.println("完成一次日志数据接收"); + } + } catch (IOException e) { + e.printStackTrace(); + } + catch (Exception e) + { + e.printStackTrace(); + } + } + } +} +class AcceptTranThread extends Thread{ + ServerSocket serverSocket; + Socket socket; + ObjectInputStream ois; + TransportService transportService; + + AcceptTranThread(int port){ + transportService = new TransportService(); + try{ + serverSocket = new ServerSocket(port); + } + catch (IOException e) + { + e.printStackTrace(); + } + } + @Override + public void run() { + while(this.isAlive()) + { + try{ + socket = serverSocket.accept(); + if(socket!=null) + { + ois = new ObjectInputStream(socket.getInputStream()); + ArrayListmatchedTransports = (ArrayList) ois.readObject(); + transportService.saveMatchTransportToDB(matchedTransports); + System.out.println("完成一次物流数据接收"); + } + } catch (IOException e) { + throw new RuntimeException(e); + } + catch (Exception e) + { + e.printStackTrace(); + } + } + } +} + diff --git a/src/com/qst/dms/ui/InfoInputFXML.java b/src/com/qst/dms/ui/InfoInputFXML.java index c8c998e..038a28a 100644 --- a/src/com/qst/dms/ui/InfoInputFXML.java +++ b/src/com/qst/dms/ui/InfoInputFXML.java @@ -19,8 +19,11 @@ import javafx.scene.paint.Color; import javafx.scene.input.MouseEvent; import javafx.util.Duration; +import java.io.IOException; +import java.io.ObjectOutputStream; import java.net.InetAddress; import java.net.NetworkInterface; +import java.net.Socket; import java.net.SocketException; import java.sql.ResultSet; import java.util.*; @@ -184,6 +187,7 @@ public class InfoInputFXML { if(!logIDValid) throw new Exception("ID已被占用"); id = Integer.parseInt(Sid); + } catch(NumberFormatException e) { @@ -512,31 +516,93 @@ public class InfoInputFXML { @FXML public void matchedAcquisitionLogData(ActionEvent event) { - if(logRecList.isEmpty()) - { + if(matchedLogs==null) matchedLogs = new ArrayList<>(); + if(logRecList.isEmpty()) return; - } LogRecAnalyse logAn = new LogRecAnalyse(logRecList); logAn.doFilter(); - matchedLogs = logAn.matchData(); + matchedLogs.addAll(logAn.matchData()); } @FXML public void matchedAcquisitionTransportData(ActionEvent event){ - if(transportList.isEmpty()) - { + if(matchedTrans==null) matchedTrans = new ArrayList<>(); + if(transportList.isEmpty()) return; - } TransportAnalyse transAn = new TransportAnalyse(transportList); transAn.doFilter(); - matchedTrans = transAn.matchData(); + matchedTrans.addAll(transAn.matchData()); } @FXML public void sandData(ActionEvent event) { - //开发中…… + boolean doLog=false,doTransport=false; + if((matchedLogs==null||matchedLogs.isEmpty())&&!logRecList.isEmpty()) + { + doLog=true; + Alert alert = new Alert(AlertType.CONFIRMATION); + alert.setTitle("Warning Dialog"); + alert.setHeaderText("配对的日志数据为空"); + alert.setContentText("你是否忘记匹配日志数据,要匹配日志数据吗?"); + Optional result = alert.showAndWait(); + if (result.get() == ButtonType.OK){ + matchedAcquisitionLogData(null); + if(matchedLogs.isEmpty()) + doLog=false; + } + else doLog=false; + } + if(doLog) + { + try { + Socket logSocket = new Socket("116.62.133.59",10000); + ObjectOutputStream oos = new ObjectOutputStream(logSocket.getOutputStream()); + oos.writeObject(matchedLogs); + oos.flush(); + oos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + logService.saveAndAppendMatchLog(matchedLogs); + //logService.saveMatchLogToDB(matchedLogs);//添加至DB + logRecList.clear(); + matchedLogs.clear(); + logUpVal=0; + } + if((matchedTrans==null|| matchedTrans.isEmpty())&&!transportList.isEmpty()) + { + doTransport=true; + Alert alert = new Alert(AlertType.CONFIRMATION); + alert.setTitle("Warning Dialog"); + alert.setHeaderText("配对的物流数据为空"); + alert.setContentText("你是否忘记匹配物流数据,要匹配物流数据吗?"); + Optional result = alert.showAndWait(); + if (result.get() == ButtonType.OK){ + matchedAcquisitionTransportData(null); + if(matchedTrans.isEmpty()) + doTransport=false; + } + else doTransport=false; + } + if(doTransport) + { + try { + Socket transSocket = new Socket("116.62.133.59",10001); + ObjectOutputStream oos = new ObjectOutputStream(transSocket.getOutputStream()); + oos.writeObject(matchedLogs); + oos.flush(); + oos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + logService.saveAndAppendMatchLog(matchedLogs); + //logService.saveMatchLogToDB(matchedLogs);//添加至DB + logRecList.clear(); + matchedLogs.clear(); + logUpVal=0; + } } @FXML @@ -560,9 +626,9 @@ public class InfoInputFXML { if(doLog) { logService.saveAndAppendMatchLog(matchedLogs); - logService.saveMatchLogToDB(matchedLogs);//添加至DB + //logService.saveMatchLogToDB(matchedLogs);//添加至DB logRecList.clear(); - matchedLogs.clear(); + //matchedLogs.clear(); 不再删除matchedLogs 因为需要发送 logUpVal=0; } if((matchedTrans==null|| matchedTrans.isEmpty())&&!transportList.isEmpty()) @@ -583,9 +649,9 @@ public class InfoInputFXML { if(doTransport) { tranService.saveAndAppendTransport(matchedTrans); - tranService.saveMatchTransportToDB(matchedTrans);//添加至DB + //tranService.saveMatchTransportToDB(matchedTrans);//添加至DB transportList.clear(); - matchedTrans.clear(); + //matchedTrans.clear(); 不再删除matchedTrans 因为需要发送 transportUpVal=0; } }