diff --git a/MatchLogs.txt b/MatchLogs.txt index a2fec18..ab46717 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 index 7a372aa..d2420cc 100644 --- a/src/com/qst/dms/net/DmsNetServer.java +++ b/src/com/qst/dms/net/DmsNetServer.java @@ -15,6 +15,7 @@ public class DmsNetServer { public static void main(String[] args) { AcceptLogThread acceptLogThread = new AcceptLogThread(10000); AcceptTranThread acceptTranThread = new AcceptTranThread(10001); + System.out.println("Start listening port 10000/10001"); acceptLogThread.start(); acceptTranThread.start(); } @@ -46,6 +47,9 @@ class AcceptLogThread extends Thread{ { ois = new ObjectInputStream(socket.getInputStream()); ArrayListmatchedLogRecs = (ArrayList) ois.readObject(); + if (matchedLogRecs == null) { + continue; + } logRecService.saveMatchLogToDB(matchedLogRecs); System.out.println("完成一次日志数据接收"); } @@ -85,6 +89,9 @@ class AcceptTranThread extends Thread{ { ois = new ObjectInputStream(socket.getInputStream()); ArrayListmatchedTransports = (ArrayList) ois.readObject(); + if (matchedTransports == null) { + continue; + } transportService.saveMatchTransportToDB(matchedTransports); System.out.println("完成一次物流数据接收"); } diff --git a/src/com/qst/dms/ui/InfoInputFXML.java b/src/com/qst/dms/ui/InfoInputFXML.java index 038a28a..a95976d 100644 --- a/src/com/qst/dms/ui/InfoInputFXML.java +++ b/src/com/qst/dms/ui/InfoInputFXML.java @@ -21,10 +21,7 @@ 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.net.*; import java.sql.ResultSet; import java.util.*; @@ -538,10 +535,14 @@ public class InfoInputFXML { @FXML public void sandData(ActionEvent event) { - boolean doLog=false,doTransport=false; + boolean doLog=true,doTransport=true; + if(matchedLogs==null||matchedLogs.isEmpty()) + doLog=false; + if(matchedTrans==null||matchedTrans.isEmpty()) + doTransport=false; if((matchedLogs==null||matchedLogs.isEmpty())&&!logRecList.isEmpty()) { - doLog=true; + doLog = true; Alert alert = new Alert(AlertType.CONFIRMATION); alert.setTitle("Warning Dialog"); alert.setHeaderText("配对的日志数据为空"); @@ -554,23 +555,6 @@ public class InfoInputFXML { } 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; @@ -586,25 +570,98 @@ public class InfoInputFXML { } else doTransport=false; } - if(doTransport) - { - try { - Socket transSocket = new Socket("116.62.133.59",10001); - ObjectOutputStream oos = new ObjectOutputStream(transSocket.getOutputStream()); + boolean finalDoLog = doLog; + boolean finalDoTransport = doTransport; + Thread thread = new Thread(()->{ + Thread thread1=null; + if(finalDoLog) + { + 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) { + }catch(ConnectException e) { + if(thread1==null) + { + thread1 = new Thread(()->{sandError();}); + thread1.start(); + } + } + catch (IOException e) { e.printStackTrace(); + } + logRecList.clear(); + matchedLogs.clear(); + logUpVal=0; } - logService.saveAndAppendMatchLog(matchedLogs); - //logService.saveMatchLogToDB(matchedLogs);//添加至DB - logRecList.clear(); - matchedLogs.clear(); - logUpVal=0; + if(finalDoTransport) + { + try { + Socket transSocket = new Socket("116.62.133.59",10001); + ObjectOutputStream oos = new ObjectOutputStream(transSocket.getOutputStream()); + oos.writeObject(matchedTrans); + oos.flush(); + oos.close(); + }catch (ConnectException e) { + if(thread1==null) + { + thread1 = new Thread(()->{sandError();}); + thread1.start(); + } + } + catch (IOException e) { + e.printStackTrace(); + } + transportList.clear(); + matchedTrans.clear(); + logUpVal=0; + } + Platform.runLater(()->{ + logImageView.setImage(OKImage); + transportImageView.setImage(OKImage); + logInfoLabel.setText("就绪"); + transportInfoLabel.setText("就绪"); + logInfoLabel.setTextFill(Color.color(0,0,0,1)); + transportInfoLabel.setTextFill(Color.color(0,0,0,1)); + }); + }); + if(doLog||doTransport) + { + logInfoLabel.setTextFill(Color.color(0,0,0,1)); + transportInfoLabel.setTextFill(Color.color(0,0,0,1)); + logInfoLabel.setText("发送数据中"); + transportInfoLabel.setText("发送数据中"); + thread.start(); } } + void sandError() + { + Platform.runLater(()-> + { + logImageView.setImage(errorImage); + transportImageView.setImage(errorImage); + logInfoLabel.setText("发送失败,请检查服务器状态"); + logInfoLabel.setText("发送失败,请检查服务器状态"); + logInfoLabel.setTextFill(Color.color(1,0,0,1)); + transportInfoLabel.setTextFill(Color.color(1,0,0,1)); + }); + try { + Thread.sleep(5000); + } catch (InterruptedException ex) { + throw new RuntimeException(ex); + } + Platform.runLater(()->{ + logImageView.setImage(OKImage); + transportImageView.setImage(OKImage); + logInfoLabel.setText("就绪"); + transportInfoLabel.setText("就绪"); + logInfoLabel.setTextFill(Color.color(0,0,0,1)); + transportInfoLabel.setTextFill(Color.color(0,0,0,1)); + }); + } @FXML public void saveData(ActionEvent event) { boolean doLog=false,doTransport=false; diff --git a/src/com/qst/dms/util/Config.java b/src/com/qst/dms/util/Config.java index 1dda3bc..6aa92a5 100644 --- a/src/com/qst/dms/util/Config.java +++ b/src/com/qst/dms/util/Config.java @@ -1,5 +1,7 @@ package com.qst.dms.util; +import com.qst.dms.ui.MainFrame; + import java.io.FileInputStream; import java.util.Properties; @@ -10,7 +12,10 @@ public class Config { try { p = new Properties(); //加载配置类 - p.load(new FileInputStream("src/com/qst/dms/db/config/mysql.properties")); + //这么写完全不行 +// p.load(new FileInputStream("src/com/qst/dms/db/config/mysql.properties")); + //看我的! + p.load(MainFrame.class.getClassLoader().getResourceAsStream("com/qst/dms/db/config/mysql.properties")); } catch (Exception e) { e.printStackTrace(); }