diff --git a/src/main/java/com/buaa/springboot/controller/BoardController.java b/src/main/java/com/buaa/springboot/controller/BoardController.java new file mode 100644 index 0000000000000000000000000000000000000000..1ae1415675fa91da134b1d50e4f5298cc9b12ad9 --- /dev/null +++ b/src/main/java/com/buaa/springboot/controller/BoardController.java @@ -0,0 +1,21 @@ +package com.buaa.springboot.controller; + +import com.buaa.springboot.service.BoardService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/board") +@CrossOrigin(origins = "*") +public class BoardController { + @Autowired + private BoardService boardService; + @PostMapping("/startGUM") + public String startGUM() { + boardService.startGUM(); + return "启动成功"; + } +} diff --git a/src/main/java/com/buaa/springboot/controller/ODTaskController.java b/src/main/java/com/buaa/springboot/controller/ODTaskController.java index 1f53a06a31e7c3afd5d63382d773342d678fd4ac..7929d50cfc5cbfcdc35c14cb861d94fe0a72fbbb 100644 --- a/src/main/java/com/buaa/springboot/controller/ODTaskController.java +++ b/src/main/java/com/buaa/springboot/controller/ODTaskController.java @@ -16,6 +16,8 @@ import java.time.Instant; import java.util.Date; import java.util.List; import java.util.Objects; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; @Data @Accessors(chain = true) @@ -25,7 +27,7 @@ import java.util.Objects; public class ODTaskController { @Autowired private ODTaskService odTaskService; - + private final Lock lock = new ReentrantLock(); @GetMapping("/hello") public String hello() { return "Hello, World!"; @@ -86,9 +88,36 @@ public class ODTaskController { @PostMapping("/exec/{id}") public ResponseEntity execODTask(@PathVariable int id) { - odTaskService.execODTask(id); - String result = odTaskService.getODTaskResults(id); - odTaskService.saveODTaskResults(id,result); +// lock.lock(); +// try { +// odTaskService.execODTask(id); +// } finally { +// lock.unlock(); +// } +// lock.lock(); +// String result; +// try { +// result = odTaskService.getODTaskResults(id); +// } finally { +// lock.unlock(); +// } +// odTaskService.saveODTaskResults(id,result); +// return ResponseEntity.ok("执行任务成功"); + // 加锁 + lock.lock(); + try { + // 执行指定ID的任务 + odTaskService.execODTask(id); + + // 获取任务执行结果 + String result = odTaskService.getODTaskResults(id); + + // 保存任务执行结果 + odTaskService.saveODTaskResults(id, result); + } finally { + // 确保在所有情况下释放锁 + lock.unlock(); + } return ResponseEntity.ok("执行任务成功"); } diff --git a/src/main/java/com/buaa/springboot/entity/board.java b/src/main/java/com/buaa/springboot/entity/board.java new file mode 100644 index 0000000000000000000000000000000000000000..fd80c6d41aa109972e80e23df23b2499b0771d5e --- /dev/null +++ b/src/main/java/com/buaa/springboot/entity/board.java @@ -0,0 +1,5 @@ +package com.buaa.springboot.entity; + +public class board { + +} diff --git a/src/main/java/com/buaa/springboot/mapper/BoardMapper.java b/src/main/java/com/buaa/springboot/mapper/BoardMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..2957298598497f1f36b98ef40bc2482dd64d4a0e --- /dev/null +++ b/src/main/java/com/buaa/springboot/mapper/BoardMapper.java @@ -0,0 +1,10 @@ +package com.buaa.springboot.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.buaa.springboot.entity.board; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface BoardMapper extends BaseMapper { + //TODO:暂时用不到 +} diff --git a/src/main/java/com/buaa/springboot/service/BoardService.java b/src/main/java/com/buaa/springboot/service/BoardService.java new file mode 100644 index 0000000000000000000000000000000000000000..13d04b3720a2a1b5df696c592b11c5eb5b6643c1 --- /dev/null +++ b/src/main/java/com/buaa/springboot/service/BoardService.java @@ -0,0 +1,9 @@ +package com.buaa.springboot.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.buaa.springboot.entity.board; +import com.buaa.springboot.mapper.BoardMapper; + +public interface BoardService { + public void startGUM(); +} diff --git a/src/main/java/com/buaa/springboot/service/impl/BoardServiceImpl.java b/src/main/java/com/buaa/springboot/service/impl/BoardServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..044de1724059d537008ed61968704a5b5018e83a --- /dev/null +++ b/src/main/java/com/buaa/springboot/service/impl/BoardServiceImpl.java @@ -0,0 +1,33 @@ +package com.buaa.springboot.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.buaa.springboot.entity.board; +import com.buaa.springboot.mapper.BoardMapper; +import com.buaa.springboot.service.BoardService; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +public class BoardServiceImpl extends ServiceImpl implements BoardService { + public void startGUM() { + List commandList1 = new ArrayList<>(); + try { + //TODO board的conda环境路径需要更改 + commandList1.add("D:\\Anaconda\\envs\\board\\python.exe"); + commandList1.add("C:\\Users\\Admin\\Desktop\\GUM.py"); + ProcessBuilder builder = new ProcessBuilder(commandList1); + Process process = builder.start(); + + List commandList2 = new ArrayList<>(); + commandList2.add("D:\\Anaconda\\envs\\board\\python.exe"); + commandList2.add("C:\\Users\\Admin\\Desktop\\rectangle.py"); + ProcessBuilder builder2 = new ProcessBuilder(commandList2); + Process process2 = builder2.start(); + + } catch (Exception e) { + throw new RuntimeException(e); + } + } +} diff --git a/src/main/java/com/buaa/springboot/service/impl/ODTaskServiceImpl.java b/src/main/java/com/buaa/springboot/service/impl/ODTaskServiceImpl.java index 67a5b901746850bee66e083a7571db8fe5bf5efd..327eea9850f5f46a6806419174e2d6670f038409 100644 --- a/src/main/java/com/buaa/springboot/service/impl/ODTaskServiceImpl.java +++ b/src/main/java/com/buaa/springboot/service/impl/ODTaskServiceImpl.java @@ -228,6 +228,21 @@ public class ODTaskServiceImpl extends ServiceImpl impleme } catch (FileNotFoundException e) { e.printStackTrace(); } + //delete the avgResult.txt + List commandList1 = new ArrayList<>(); + try { + commandList1.add("cmd"); + commandList1.add("/c"); + commandList1.add("del"); + commandList1.add("D:\\dockerResult\\avgResult.txt"); + ProcessBuilder builder1 = new ProcessBuilder(commandList1); + Process process1 = builder1.start(); + consumeStream(process1.getInputStream()); + consumeStream(process1.getErrorStream()); + process1.waitFor(); + } catch (Exception e) { + throw new RuntimeException(e); + } return jsonString; }