From 75d5cf215a19c8f475d981bb3de2f6c485f17130 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期日, 29 九月 2024 15:23:02 +0800
Subject: [PATCH] 1

---
 src/main/java/com/se/simu/service/UwService.java |   66 ++++++++++++++++++++++++++++++---
 1 files changed, 60 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/se/simu/service/UwService.java b/src/main/java/com/se/simu/service/UwService.java
index 442c80c..6cda612 100644
--- a/src/main/java/com/se/simu/service/UwService.java
+++ b/src/main/java/com/se/simu/service/UwService.java
@@ -4,14 +4,12 @@
 import com.se.simu.config.PropertiesConfig;
 import com.se.simu.domain.dto.ConfigDto;
 import com.se.simu.domain.po.DataPo;
+import com.se.simu.helper.WebHelper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
+import java.io.*;
 
 /**
  * 鍐呮稘姹傝В鍣ㄦ湇鍔$被
@@ -44,8 +42,64 @@
         fw.close();
     }
 
-    public void callExe() {
-        //
+    public String callExe(DataPo data) throws Exception {
+        String cmd = String.format("%s %d %s", config.getSolverBat(), WebHelper.getCpuCores(), data.getInPath() + ".json");
+
+        return exec(cmd);
+    }
+
+    private String exec(String cmd) throws Exception {
+        Process process = null;
+        BufferedReader nr = null;
+        BufferedReader er = null;
+        try {
+            // new String[] { "/bin/sh", "-c", cmd }
+            process = Runtime.getRuntime().exec(cmd);
+            nr = new BufferedReader(new InputStreamReader(process.getInputStream()));
+            er = new BufferedReader(new InputStreamReader(process.getErrorStream()));
+
+            String errorLine;
+            while ((errorLine = er.readLine()) != null) {
+                log.warn(errorLine);
+            }
+
+            String line;
+            StringBuilder sb = new StringBuilder();
+            while ((line = nr.readLine()) != null) {
+                sb.append(line);
+            }
+
+            // 绛夊緟绋嬪簭鎵ц缁撴潫骞惰緭鍑虹姸鎬�
+            int exitCode = process.waitFor();
+
+            return sb.toString();
+        } catch (Exception ex) {
+            throw ex;
+        } finally {
+            closeReader(er);
+            closeReader(nr);
+            closeProcess(process);
+        }
+    }
+
+    private static void closeReader(Reader reader) {
+        if (null != reader) {
+            try {
+                reader.close();
+            } catch (Exception ex) {
+                log.error(ex.getMessage(), ex);
+            }
+        }
+    }
+
+    private static void closeProcess(Process process) {
+        if (null != process) {
+            try {
+                process.destroy();
+            } catch (Exception ex) {
+                log.error(ex.getMessage(), ex);
+            }
+        }
     }
 
     public void copeWaterFiles() {

--
Gitblit v1.9.3