#
luxiaotao1123
2024-12-16 62dbd7e739a4ee3ab954445352a93a29b2face8c
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AvoidWaveCalculator.java
@@ -28,10 +28,9 @@
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -106,19 +105,41 @@
            long startTime = System.currentTimeMillis();
            Resource resource = new ClassPathResource("agv.py");
            File file = resource.getFile();
            ProcessBuilder processBuilder = new ProcessBuilder(
                    "python"
                    , file.getAbsolutePath()
                    , String.valueOf(avoidDistance)
                    , redisProperties.getHost()
                    , redisProperties.getPassword()
                    , String.valueOf(redisProperties.getPort())
                    , String.valueOf(redisProperties.getIndex())
            );
            processBuilder.redirectErrorStream(true);
            File tempScript = null;
            try {
                InputStream is = resource.getInputStream();
                tempScript = File.createTempFile("agv", ".py");
                tempScript.deleteOnExit();
                Files.copy(is, tempScript.toPath(), StandardCopyOption.REPLACE_EXISTING);
                tempScript.setExecutable(true);
                ProcessBuilder processBuilder = new ProcessBuilder(
                        "python" // 或者 "python3" 取决于系统配置
                        , tempScript.getAbsolutePath()
                        , String.valueOf(avoidDistance)
                        , redisProperties.getHost()
                        , redisProperties.getPassword()
                        , String.valueOf(redisProperties.getPort())
                        , String.valueOf(redisProperties.getIndex())
                );
                processBuilder.redirectErrorStream(true);
//            File file = resource.getFile();
//            ProcessBuilder processBuilder = new ProcessBuilder(
//                    "python"
//                    , file.getAbsolutePath()
//                    , String.valueOf(avoidDistance)
//                    , redisProperties.getHost()
//                    , redisProperties.getPassword()
//                    , String.valueOf(redisProperties.getPort())
//                    , String.valueOf(redisProperties.getIndex())
//            );
//            processBuilder.redirectErrorStream(true);
                Process process = processBuilder.start();
                BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));